Как сделать так, чтобы приложение, генерирующее PDF, поддерживало как можно больше языковых шрифтов? - PullRequest
0 голосов
/ 24 января 2019

Я разрабатываю приложение, которое генерирует PDF на основе пользовательского ввода. Один из вводимых пользователем данных - это иностранный почтовый адрес в собственном сценарии этой страны, который может быть любым. Я знаю, что не могу поддерживать все возможные символы, но я хочу охватить как можно больше. Мой план прямо сейчас:

  1. Найдите шрифт «по умолчанию», который обрабатывает более простые языки (слева направо, с несколькими символами, такими как большинство латинских алфавитов, кириллица, греческий). Я думаю о шрифте Ubuntu, потому что у него очень либеральная лицензия
  2. Найдите шрифты для распространенных языков / наборов языков, таких как CJK, арабский.
  3. Когда мне нужно добавить текст в pdf, я пытаюсь найти в моем наборе шрифт, который может обрабатывать все кодовые точки в строке, начиная со значения по умолчанию.

Это звучит разумно, или есть более простой способ? Есть ли список лучших N языков / систем письма, которые я должен поддерживать?

Мне также интересно, как веб-браузеры отлично справляются с отображением любого языка (я давно не видел символа «тофу» для неизвестного кода).

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Это звучит разумно, или есть более простой способ?

По существу пункты 1 и 2 вместе означают "собрать достаточно шрифтов, чтобы покрыть достаточно большую частькодовые точки Unicode ".Это, очевидно, необходимо.

Как @RoelN упоминает в своем ответе, Ното может быть набором шрифтов для рассмотрения.

Пункт 3, однако,

КогдаМне нужно добавить текст в PDF, я пытаюсь найти шрифт в моем наборе, который может обрабатывать все кодовые точки в строке, начиная со значения по умолчанию.

не имеет смысла.Конечно, если есть такой единственный шрифт, вы можете использовать его.Но что, если их нет?

Поэтому я бы предложил не рассчитывать на существование такого шрифта, а вместо этого разбить вашу строку на подстроки, каждая из которых состоит из символов, покрытых одним шрифтом из вашего списка, и нарисоватьполная строка по частям, меняя шрифт между частями.

Скорее всего, вам придется не только разбивать вашу строку по шрифту, но и по направлению (RTL против LTR), по крайней мере, на промежуточном этапе.

Есть ли список лучших N языков / систем письма, которые я должен поддерживать?

Какие языковые системы, о которых вы должны сообщить , четко зависят отваш вариант использования.Поскольку вы хотите, чтобы охватывал максимально возможное количество , вам, вероятно, следует просто начать с семейства шрифтов, такого как Noto, и расширять свой список шрифтов соответствующим образом всякий раз, когда ваше приложение регистрирует ошибку поиска для какого-либо символа.

0 голосов
/ 28 января 2019

В зависимости от того, насколько большим может быть ваше приложение, вы можете взглянуть на Noto , который "будет поддерживать все языки с гармоничным внешним видом и интерфейсом".Но имейте в виду, что для покрытия каждой системы письма на планете потребуется по крайней мере гигабайт шрифтов.

Браузеры поддерживают широкий диапазон систем письма («языков»), полагаясь на различные запасные варианты.шрифты, предоставляемые операционной системой.Только когда они истощатся, вы увидите тофу.

...