Metrolog / Font.GOST2.304-81

Проект шрифтов ГОСТ 2.304-81 (ttf, otf, ...), пакета TeX для них, msi, msm, chocolatey пакета для них
Apache License 2.0
15 stars 1 forks source link

в doc в math режиме не отображается переменные, только цифры #155

Open sergey-s-betke opened 8 years ago

sergey-s-betke commented 8 years ago

Как выяснилось - всё просто. Просто проблемы совместимости с пакетом Unicode-math. Отключил пакет - и проблема ушла...

Необходимо изучить fontspec. В коде этого пакета обрабатываются проблемы совместимости с Unicode-math. Целесообразно либо генерировать ошибку при подключении Unicode-math, либо решить проблему совместимости, переопределяя всё, что необходимо, для своей версии математики.

sergey-s-betke commented 8 years ago

Однако... Лучше бы обеспечить совместимость с Unicode-math, ещё лучше - принудительно использовать этот пакет. В нём масса опций, которые решат уже возникшие проблемы. В частности - #147.

sergey-s-betke commented 8 years ago

Однако, проблема #156 остаётся на месте при использовании Unicode-math.

Для того, чтобы Unicode-math сам переопределил symbols и largesymbols необходимо добавить math скрипт в шрифт (#165).

sergey-s-betke commented 8 years ago

Объявление скрипта math в шрифте проблемы #156 не решает.

sergey-s-betke commented 8 years ago

И всё-таки... Модуль Unicode-math нужно отключать и на него ругаться о несовместимости. Всё равно никаких проблем он не решил, но создал. В таком случае проще подглядеть в нём отдельные решения, чем иметь проблемы с fontspec.

sergey-s-betke commented 8 years ago

Стоит проверить загрузку и других пакетов, отключающих необходимую нам обработку в fontspec.

sergey-s-betke commented 8 years ago

Однако, без Unicode-math целого ряда символов не хватает. Видимо, всё-таки необходимо использовать Unicode-math...

sergey-s-betke commented 8 years ago

Причина, похоже, ясна:

\cs_new:Npn \__um_resolve_greek:
 {
  \clist_map_inline:nn
   {
    Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,
    alpha,beta,gamma,delta,        zeta,eta,theta,iota,kappa,lambda,
    Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,
    mu,nu,xi,omicron,pi,rho,sigma,tau,upsilon,    chi,psi,omega,
    varTheta,
    varsigma,vartheta,varkappa,varrho,varpi
   }
   {
    \tl_set:cx {##1} { \exp_not:c { mit ##1 } }
    \tl_set:cx {up ##1} { \exp_not:N \symup \exp_not:c { ##1 } }
    \tl_set:cx {it ##1} { \exp_not:N \symit \exp_not:c { ##1 } }
   }
  \tl_set:Nn \epsilon
   { \bool_if:NTF \g__um_texgreek_bool \mitvarepsilon \mitepsilon }
  \tl_set:Nn \phi
   { \bool_if:NTF \g__um_texgreek_bool \mitvarphi \mitphi }
  \tl_set:Nn \varepsilon
   { \bool_if:NTF \g__um_texgreek_bool \mitepsilon \mitvarepsilon }
  \tl_set:Nn \varphi
   { \bool_if:NTF \g__um_texgreek_bool \mitphi \mitvarphi }
 }

Как видно, все "обычные" макросы греческого алфавита заменяются на символы с наклонным начертанием. Их у меня в шрифте нет. Нет по той простой причине, что они есть в наклонном шрифте!

sergey-s-betke commented 8 years ago

Unicode-math переопределяет отдельные макросы fontspec:

\cs_set:Nn \__fontspec_setmainfont:nn
 {
  \fontspec_set_family:Nnn \rmdefault {#1}{#2}
  \tl_if_eq:onT {\g__fontspec_mathrm_tl} {\rmdefault}
   {
  \fontspec_set_family:Nnn \g__fontspec_mathrm_tl {#1} {#2}
    \SetMathAlphabet\mathrm{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\updefault
    \SetMathAlphabet\mathit{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\mddefault\itdefault
    \SetMathAlphabet\mathbf{normal}\g_fontspec_encoding_tl\g__fontspec_mathrm_tl\bfdefault\updefault
   }
  \normalfont
  \ignorespaces
 }

Стоит воспользоваться этой логикой.

sergey-s-betke commented 8 years ago

Решаться будет совместно с #179.