Неправильное размещение меток в шрифте OpenType

Я разрабатываю арабский шрифт открытого типа. Я использую метки для размещения хараката, у меня возникла проблема с размещением символа U+06D6 (маленький сад с лигатурой лам) над U+06E4 (арабский маленький высокий мадда). Он отображается неправильно, и SMALL-SAD-WITH-LAM помещается на неизвестное место (круг), а не на Мадду, пожалуйста, проверьте прикрепленный снимок.

Неверное размещение метки

Ответы (1)

Здесь есть несколько мест, где что-то может пойти не так:

  • Вы создали функцию OpenType, которая выполняет это размещение?
  • Поддерживает ли программа, которую вы используете для рендеринга, функцию OpenType, которую вы использовали для реализации этого?
  • Используете ли вы символы в правильном, совместимом с Unicode порядке?
  • Я почти ничего не знаю об арабском языке, но мне кажется, что желаемый результат должен быть комбинацией из трех символов:

    • U+0628 арабская буква бех
    • U + 06E4 Малая высокая арабская мадда
    • U + 06D6 Арабская маленькая высокая вязь сад с ламом с алеф максура


    В приведенном выше порядке (справа налево), т.е. بۤۖ, они отображаются без заполнителей на моей машине, и все выглядит нормально (насколько я могу судить).

Да, он отображается правильно в браузере, но не в таких приложениях, как блокнот. :|
@AVEbrahimi: Разве Notepad не был текстовым редактором с нулевой функциональностью, к которому Microsoft не притрагивалась с 1990 года? Почему вы ожидаете, что он будет поддерживать OpenType? В любом случае, похоже, вы сузили свою проблему. Если в каких-то программах работает, то скорее всего дело не в вашем шрифте, а в поддержке OpenType.
Боковое примечание: вы можете получить какое-то импровизированное решение для не-OpenType, заставив ваши комбинированные символы иметь нулевое пространство и фактический глиф, расположенный перед (против направления письма) нулем оси x . Однако это означает, что объединяющий символ всегда будет находиться в одном и том же положении относительно базового символа. Но поскольку это можно переопределить с помощью OpenType, вы видите это импровизированное решение только тогда, когда оно вам действительно нужно.