带有变音符号和藏文字体的 tex4ebook

带有变音符号和藏文字体的 tex4ebook

我正在尝试使用 tex4ebook 将藏文文本的英文注释转换为 ePub,其中包含一些藏文咒语和有用的发音。以下 test.tex 是一个例子:

% !TEX encoding = UTF-8 Unicode
\documentclass[12pt,oneside]{book}   
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{ctib}

\begin{document}

Some text ...

O\d{M} \=A\d{H}  H\=U\d{M}

{\tib \om, ma nxi pa\V{de}{ma} \hung \hrih:}

\end{document}

编译结果如下,符合预期:

lualatex test.tex or pdflatex test.tex

为了创建我正在尝试的 epub 版本:

 tex4ebook -l -c config test.tex

结束 config.cfg 是:

\Preamble{xhtml}
\CutAt{section}
\makeatletter
% Various helper functions
% default font size
\newcommand\emwidth{16}
\let\emwidth\f@size
% convert pt to rem
\newcommand\CalcRem[1]{\strip@pt\dimexpr(#1)/\emwidth}
  \Configure{graphics*}  
         {svg}  
          {\Picture[pict]{\csname Gin@base\endcsname.svg
          \space style="width:\CalcRem{\Gin@req@width}em;"
          }%  
          \special{t4ht+@File: \csname Gin@base\endcsname.svg}
         }  
\DeclareGraphicsExtensions{.svg,.png,.jpg}
\begin{document}
\newcommand\AddFontFace[4]{%
\Css{@font-face {
    font-family: #1;
    src: local("#2"),
        url('#3');
    #4
 }}
\special{t4ht+@File: #3}
}
\edef\CurrentFontFamily{rmfamily}
\newcommand\SetFontFamily[1]{
\edef\CurrentFontFamily{#1}
}
\newcommand\NormalFont[2]{\AddFontFace{\CurrentFontFamily}{#1}{#2}{font-weight: normal;font-style: normal;}}

\newcommand\BoldFont[2]{\AddFontFace{\CurrentFontFamily}{#1}{#2}{font-weight: bold;font-style: normal;}}
\newcommand\ItalicFont[2]{\AddFontFace{\CurrentFontFamily}{#1}{#2}{font-weight: normal;font-style: italic;}}
\newcommand\BoldItalicFont[2]{\AddFontFace{\CurrentFontFamily}{#1}{#2}{font-weight: bold;font-style: italic;}}

问题在于 ePub 版本中关于咒语和变音符号的输出。如能得到任何帮助,我将不胜感激。谢谢。

答案1

存在两个问题:带点的重音符号字母被转换成图片,藏文文本混合了 Unicode 字母和图片,并且缺少一些字母:

在此处输入图片描述

我们必须为每个带点重音符号的字母提供 Unicode 值配置。我查看了重音命令的配置方式,tex4ht找到了以下配置:

\expand:after{\expand:after{\Configure{accent}}%
 \csname OT1\string\d\endcsname}%
 \csname OT1\string\d\endcsname{{}{}}
 {\a:accents{d}{#1}}     {\b:accents{d}{#1}{#2}}

它看起来有点神秘,但重点是应该在这个地方有一个字母列表,后面跟着组合字母的 Unicode 代码点:\csname OT1\string\d\endcsname{{}{}}。当缺少字母的配置时,它将转换为图像,如您的示例中所示。

它看起来应该是这样的:

\expand:after{\expand:after{\Configure{accent}}%
 \csname OT1\string\d\endcsname}%
  \csname OT1\string\d\endcsname{A{1EA0}a{1Ea1}B{1E04}b{1E05}D{1E0C}d{1E0D}%
  E{1EB8}e{1EB9}H{1E24}h{1E25}I{1ECA}i{1ECB}%
  K{1E32}k{1E33}L{1E36}l{1E37}M{1E42}m{1E43}%
  N{1E46}n{1E47}O{1ECC}o{1ECD}R{1E5A}r{1E5B}%
  S{1E62}s{1E63}T{1E6C}t{1E6D}U{1EE4}u{1EE5}%
  V{1E7E}v{1E7F}W{1E88}w{1E89}Y{1EF4}y{1EF5}%
  {}{}}
     {\a:accents{d}{#1}}     {\b:accents{d}{#1}{#2}}

关于咒语,ctib使用一些 Metafont 技巧将音译文本转换为图像。期望它完美地翻译成 Unicode 似乎不太现实,所以我会将其转换为图像。您可以引入一些简单的命令,这些命令将在文档中使用:

\newcommand\mantra[1]{\bgroup\tib #1\egroup}
...
\mantra{\om, ma nxi pa\V{de}{ma} \hung \hrih:}

并在配置文件中重新定义它:

\renewcommand\mantra[1]{\Picture+{}\bgroup\tib #1\egroup\EndPicture}

完整的配置文件如下所示:

\Preamble{xhtml}
\CutAt{section}
\makeatletter
% Various helper functions
% default font size
\newcommand\emwidth{16}
\let\emwidth\f@size
% convert pt to rem
\newcommand\CalcRem[1]{\strip@pt\dimexpr(#1)/\emwidth}
  \Configure{graphics*}  
         {svg}  
          {\Picture[pict]{\csname Gin@base\endcsname.svg
          \space style="width:\CalcRem{\csname Gin@req@width\endcsname}em;"
          }%  
          \special{t4ht+@File: \csname Gin@base\endcsname.svg}
         }  
\DeclareGraphicsExtensions{.svg,.png,.jpg}
\begin{document}
\newcommand\AddFontFace[4]{%
\Css{@font-face {
    font-family: #1;
    src: local("#2"),
        url('#3');
    #4
 }}
\special{t4ht+@File: #3}
}
\edef\CurrentFontFamily{rmfamily}
\newcommand\SetFontFamily[1]{
\edef\CurrentFontFamily{#1}
}
\newcommand\NormalFont[2]{\AddFontFace{\CurrentFontFamily}{#1}{#2}{font-weight: normal;font-style: normal;}}

\newcommand\BoldFont[2]{\AddFontFace{\CurrentFontFamily}{#1}{#2}{font-weight: bold;font-style: normal;}}
\newcommand\ItalicFont[2]{\AddFontFace{\CurrentFontFamily}{#1}{#2}{font-weight: normal;font-style: italic;}}
\newcommand\BoldItalicFont[2]{\AddFontFace{\CurrentFontFamily}{#1}{#2}{font-weight: bold;font-style: italic;}}

%  patch for \mantra command
\renewcommand\mantra[1]{\Picture+{}\bgroup\tib #1\egroup\EndPicture}
% Use the following configuration if you want to convert mantras to SVG instead of PNG
% Note that the compilation time is longer and the resulting SVG file much bigger
% \Configure{Picture}{.svg}
% Configuration for \d accent
\catcode`\:=11
\expand:after{\expand:after{\Configure{accent}}%
 \csname OT1\string\d\endcsname}%
  \csname OT1\string\d\endcsname{A{1EA0}a{1Ea1}B{1E04}b{1E05}D{1E0C}d{1E0D}%
  E{1EB8}e{1EB9}H{1E24}h{1E25}I{1ECA}i{1ECB}%
  K{1E32}k{1E33}L{1E36}l{1E37}M{1E42}m{1E43}%
  N{1E46}n{1E47}O{1ECC}o{1ECD}R{1E5A}r{1E5B}%
  S{1E62}s{1E63}T{1E6C}t{1E6D}U{1EE4}u{1EE5}%
  V{1E7E}v{1E7F}W{1E88}w{1E89}Y{1EF4}y{1EF5}%
  {}{}}
     {\a:accents{d}{#1}}     {\b:accents{d}{#1}{#2}}
\catcode`\:=12

\EndPreamble

结果如下:

在此处输入图片描述

相关内容