По умолчанию ReactVR поддерживает только латинские и кириллические символы, для любых других типов символов вам придется загружать пользовательские шрифты. К счастью, в официальном репозитории уже есть готовые шрифты, просто они не публикуются как часть пакета npm. Вам придется вручную скопировать шрифты из здесь в ваш проект (скажем, под /fonts
).
Для японского это проще, так как вам нужно загрузить только один шрифт. Просто используйте метод loadFont
из OVRUI
, укажите его на ваши файлы шрифтов и передайте результат вашему VRInstance
при его создании.
// vr/client.js
import {VRInstance} from 'react-vr-web';
import * as OVRUI from 'ovrui';
// Store the default font, we'll extend it with Japanese support.
const font = OVRUI.loadFont();
function init(bundle, parent, options) {
OVRUI.loadFont('../fonts/japanese.fnt', '../fonts/japanese.png').then((fallbackFont) => {
OVRUI.addFontFallback(font, fallbackFont);
const vr = new VRInstance(bundle, 'VRTEST', parent, {
font: font,
...options,
});
vr.render = function() {};
vr.start();
});
}
window.ReactVR = {init};
Для китайского вам нужно загрузить три набора символов. Поскольку loadFont
является anync, нам нужно отслеживать, сколько шрифтов загружено, и инициализировать VRInstance
только тогда, когда все они будут готовы.
// vr/client.js
import {VRInstance} from 'react-vr-web';
import * as OVRUI from 'ovrui';
const fallbackFonts = [{
fnt: '../fonts/cjk_0.fnt',
png: '../fonts/cjk_0_sdf.png'
}, {
fnt: '../fonts/cjk_1.fnt',
png: '../fonts/cjk_1_sdf.png'
}, {
fnt: '../fonts/cjk_2.fnt',
png: '../fonts/cjk_2_sdf.png'
}];
const font = OVRUI.loadFont();
function init(bundle, parent, options) {
let count = 0;
fallbackFonts.forEach((fontPaths) => {
count += 1;
OVRUI.loadFont(fontPaths.fnt, fontPaths.png).then((fallbackFont) => {
OVRUI.addFontFallback(font, fallbackFont);
count -= 1;
if (count === 0) {
const vr = new VRInstance(bundle, 'VRTEST', parent, {
font: font,
...options,
});
vr.render = function() {};
vr.start();
}
});
});
}
window.ReactVR = {init};
Используемые ресурсы:
person
Valentin
schedule
01.07.2017