Skip to content

Commit 7c72e59

Browse files
committed
actualize ru for fonts
1 parent 509490f commit 7c72e59

File tree

1 file changed

+76
-5
lines changed

1 file changed

+76
-5
lines changed

docs/ru/manuals/font.md

Lines changed: 76 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,11 @@ brief: В этом руководстве описаны особенности
1111
- OpenType
1212
- BMFont
1313

14-
1514
Шрифты, добавленные в проект, автоматически конвертируются в текстуру, которую Defold может визуализировать. Доступны два метода визуализации шрифтов, каждый из которых имеет свои преимущества и недостатки:
1615

1716
- Bitmap
1817
- Distance field
1918

20-
::: sidenote
21-
Вместо генерации и включения текстуры шрифта в состав приложения можно [генерировать глифы шрифта во время выполнения](/extension-fontgen) из встроенного шрифта TrueType. Такой подход может значительно сократить размер загрузки и потребление оперативной памяти в игре на Defold.
22-
:::
23-
2419
## Создание шрифта
2520

2621
Чтобы создать шрифт для использования в Defold, создайте новый файл Font, выбрав в меню <kbd>File ▸ New...</kbd>, затем <kbd>Font</kbd>. Можно также <kbd>кликнуть ПКМ</kbd> в нужном расположении в браузере ассетов и выбрать <kbd>New... ▸ Font</kbd>.
@@ -167,3 +162,79 @@ space ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E
167162
`float horizontal_gradient = fract(var_texcoord0.y / texture_size_recip.w);`
168163

169164
Подробнее об унифицированных шейдерных переменных см. В [руководстве по шейдерам](/manuals/shader).
165+
166+
## Генерация во время выполнения
167+
168+
Возможно использовать генерацию шрифтов типа SDF (Distance Field) во время выполнения при использовании шрифтов TrueType (.ttf).
169+
Этот подход позволяет значительно уменьшить размер загрузки и потребление памяти во время выполнения в игре на Defold.
170+
Небольшой недостаток — небольшая задержка при генерации каждого глифа во время выполнения.
171+
172+
Активируйте эту возможность, установив параметр `font.runtime_generation` в файле game.project.
173+
174+
::: sidenote
175+
Эта функция на данный момент является экспериментальной, но планируется использовать её в качестве основного рабочего процесса в будущем.
176+
:::
177+
178+
::: important
179+
Этот параметр влияет на все .ttf шрифты в проекте.
180+
:::
181+
182+
### Предварительная генерация кэша глифов
183+
184+
Чтобы упростить использование шрифтов, генерируемых во время выполнения, поддерживается предварительная генерация кэша глифов.
185+
Это означает, что шрифт сгенерирует глифы, указанные в поле *Characters* ресурса шрифта.
186+
187+
::: sidenote
188+
Если установлено свойство `All Chars`, предварительная генерация не будет выполняться, так как это противоречит цели — не генерировать все глифы сразу.
189+
:::
190+
191+
### Скриптование шрифтов
192+
193+
Для шрифтов, генерируемых во время выполнения, можно добавлять и удалять подшрифты.
194+
Это полезно, если один большой шрифт был разделён на несколько файлов по наборам символов (например, для CJK).
195+
196+
::: important
197+
Добавление подшрифта не приводит к автоматической загрузке или отображению всех глифов.
198+
:::
199+
200+
```lua
201+
-- Добавить диапазон A-Z в .fontc
202+
local font_hash = hash("/assets/fonts/roboto.fontc")
203+
local ttf_hash = hash("/assets/fonts/Roboto/Roboto-Bold.ttf")
204+
local codepoint_min = 0x00000041 -- A
205+
local codepoint_max = 0x0000005A -- Z
206+
font.add_source(font_hash, ttf_hash, codepoint_min, codepoint_max)
207+
```
208+
209+
```lua
210+
-- Удалить связанный ttf-ресурс
211+
local font_hash = hash("/assets/fonts/roboto.fontc")
212+
local ttf_hash = hash("/assets/fonts/Roboto/Roboto-Bold.ttf")
213+
font.remove_source(font_hash, ttf_hash)
214+
```
215+
216+
Чтобы загрузить глифы в шрифт, необходимо вызвать `font.add_glyphs()`.
217+
Это асинхронная операция, и после её завершения можно безопасно отображать сообщения, содержащие эти глифы.
218+
219+
```lua
220+
local function add_glyph_callback(self, id, result, errmsg)
221+
if not result then
222+
print("Запрос " .. id .. " завершился с ошибкой:", errmsg)
223+
else
224+
msg.post(some_url, "show_dialog")
225+
end
226+
end
227+
228+
-- Загрузить глифы в шрифт
229+
local font_hash = hash("/assets/fonts/roboto.fontc")
230+
local glyphs = "Some text to be shown!" -- для наилучшей производительности используйте список уникальных глифов
231+
local request_id = font.add_glyphs(font_hash, ttf_hash, add_glyph_callback)
232+
```
233+
234+
И, когда символы больше не нужны, можно освободить память:
235+
```lua
236+
-- Удалить глифы из памяти
237+
local font_hash = hash("/assets/fonts/roboto.fontc")
238+
font.remove_glyphs(font_hash, "Все символы из набора")
239+
```
240+

0 commit comments

Comments
 (0)