孟加拉语元音转写问题

孟加拉语元音转写问题

元音问题

我无法修复与া, ি, ী, ু, ূ等孟加拉元音有关的问题。例如,如果我\bn{amra khai}使用以下 MWE 书写,它应该是আমরা খাই,但我得到的输出ামরা াম খাই是 或আমরআ আম খআই。我如何用一个字符设置和?a

其他元音也会发生同样的事情:
i 代表 ই/ি
i 代表 ঈ/ী
i 代表উ/ু 等等。

我该如何通过更改以下 MWE 或其他解决方案来解决此问题?

我的工作 MWE:

\documentclass{article}
%\usepackage{mapping}

\usepackage{fontspec}
\newfontface\bengalifont{Kalpurush.ttf}[Script=Bengali,Renderer=HarfBuzz]

\ExplSyntaxOn

% transliteration: Latin-to-Bangla
\NewDocumentCommand{\bn}{ m }
{
\tl_set:Nn \l_mytrans_tl { #1 }
\dobntrans 
    { \bengalifont \tl_use:N \l_mytrans_tl }
}

\newcommand\dobntrans{
\tl_replace_all:Nnn \l_mytrans_tl { kh } { খ } 
\tl_replace_all:Nnn \l_mytrans_tl { gh } { ঘ} 
\tl_replace_all:Nnn \l_mytrans_tl { Ng } { ঙ } 
\tl_replace_all:Nnn \l_mytrans_tl { ch } { ছ } 
\tl_replace_all:Nnn \l_mytrans_tl { ng } { ং } 
\tl_replace_all:Nnn \l_mytrans_tl { jh } { ঝ } 
\tl_replace_all:Nnn \l_mytrans_tl { NG } { ঞ } 
\tl_replace_all:Nnn \l_mytrans_tl { Th } { ঠ } 
\tl_replace_all:Nnn \l_mytrans_tl { Dh } { ঢ } 
\tl_replace_all:Nnn \l_mytrans_tl { th } { থ } 
\tl_replace_all:Nnn \l_mytrans_tl { dh } { ধ } 
\tl_replace_all:Nnn \l_mytrans_tl { ph } { ফ } 
\tl_replace_all:Nnn \l_mytrans_tl { bh } { ভ } 
\tl_replace_all:Nnn \l_mytrans_tl { sh } { শ } 
\tl_replace_all:Nnn \l_mytrans_tl { Sh } { ষ } 
\tl_replace_all:Nnn \l_mytrans_tl { Rh } { ঢ় } 

\tl_replace_all:Nnn \l_mytrans_tl { rr } { ্র } 

\tl_replace_all:Nnn \l_mytrans_tl { o= } { অ } 
\tl_replace_all:Nnn \l_mytrans_tl { A } { আ } 
\tl_replace_all:Nnn \l_mytrans_tl { I } { ই } 
\tl_replace_all:Nnn \l_mytrans_tl { ii= } { ঈ } 
\tl_replace_all:Nnn \l_mytrans_tl { U } { উ } 
\tl_replace_all:Nnn \l_mytrans_tl { uu= } { ঊ } 
\tl_replace_all:Nnn \l_mytrans_tl { r= } { ঋ } 
\tl_replace_all:Nnn \l_mytrans_tl { E } { এ } 
\tl_replace_all:Nnn \l_mytrans_tl { ai= } { ঐ } 
\tl_replace_all:Nnn \l_mytrans_tl { oo= } { ও } 
\tl_replace_all:Nnn \l_mytrans_tl { au= } { ঔ } 

\tl_replace_all:Nnn \l_mytrans_tl { a } { া } 
\tl_replace_all:Nnn \l_mytrans_tl { i } { ি } 
\tl_replace_all:Nnn \l_mytrans_tl { I } { ী } 
\tl_replace_all:Nnn \l_mytrans_tl { u } { ু } 
\tl_replace_all:Nnn \l_mytrans_tl { U } { ূ } 
\tl_replace_all:Nnn \l_mytrans_tl { -r } { ৃ } 
\tl_replace_all:Nnn \l_mytrans_tl { e } { ে } 
\tl_replace_all:Nnn \l_mytrans_tl { ai } { ৈ } 
\tl_replace_all:Nnn \l_mytrans_tl { O} { ো } 
\tl_replace_all:Nnn \l_mytrans_tl { au} { ৌ } 

\tl_replace_all:Nnn \l_mytrans_tl { k } { ক } 
\tl_replace_all:Nnn \l_mytrans_tl { g } { গ } 

\tl_replace_all:Nnn \l_mytrans_tl { c } { চ } 
\tl_replace_all:Nnn \l_mytrans_tl { j } { জ } 
\tl_replace_all:Nnn \l_mytrans_tl { J } {জ } 


\tl_replace_all:Nnn \l_mytrans_tl { T } { ট } 

\tl_replace_all:Nnn \l_mytrans_tl { D } { ড } 
\tl_replace_all:Nnn \l_mytrans_tl { N } { ণ } 

\tl_replace_all:Nnn \l_mytrans_tl { t } { ত } 
\tl_replace_all:Nnn \l_mytrans_tl { d } { দ } 
\tl_replace_all:Nnn \l_mytrans_tl { n } { ন } 
\tl_replace_all:Nnn \l_mytrans_tl { p } { প } 
\tl_replace_all:Nnn \l_mytrans_tl { f } { ফ } 
\tl_replace_all:Nnn \l_mytrans_tl { b } { ব } 
\tl_replace_all:Nnn \l_mytrans_tl { v } { ভ } 
\tl_replace_all:Nnn \l_mytrans_tl { m } { ম } 

\tl_replace_all:Nnn \l_mytrans_tl { z } { য } 
\tl_replace_all:Nnn \l_mytrans_tl { r } { র } 
\tl_replace_all:Nnn \l_mytrans_tl { l } { ল } 
\tl_replace_all:Nnn \l_mytrans_tl { S } { শ } 
\tl_replace_all:Nnn \l_mytrans_tl { s } { স } 
\tl_replace_all:Nnn \l_mytrans_tl { H } { হ } 
\tl_replace_all:Nnn \l_mytrans_tl { R } { ড় } 
\tl_replace_all:Nnn \l_mytrans_tl { y } { য় }
\tl_replace_all:Nnn \l_mytrans_tl { Y } { য় }
\tl_replace_all:Nnn \l_mytrans_tl { t- } { ৎ } 
\tl_replace_all:Nnn \l_mytrans_tl { : } { ঃ } 
\tl_replace_all:Nnn \l_mytrans_tl { ^ } { ঁ } 
\tl_replace_all:Nnn \l_mytrans_tl { o } { ্ }

\tl_replace_all:Nnn \l_mytrans_tl { w } { ্ব } 
\tl_replace_all:Nnn \l_mytrans_tl { Z } { ্য } 
%\tl_replace_all:Nnn \l_mytrans_tl { rr } { ্র } 


\tl_replace_all:Nnn \l_mytrans_tl { 0 } { ০ } 
\tl_replace_all:Nnn \l_mytrans_tl { 1 } { ১ } 
\tl_replace_all:Nnn \l_mytrans_tl { 2 } { ২ } 
\tl_replace_all:Nnn \l_mytrans_tl { 3 } { ৩ } 
\tl_replace_all:Nnn \l_mytrans_tl { 4 } { ৪ } 
\tl_replace_all:Nnn \l_mytrans_tl { 5 } { ৫ } 
\tl_replace_all:Nnn \l_mytrans_tl { 6 } { ৬ } 
\tl_replace_all:Nnn \l_mytrans_tl { 7 } { ৭ } 
\tl_replace_all:Nnn \l_mytrans_tl { 8 } { ৮ } 
\tl_replace_all:Nnn \l_mytrans_tl { 9 } { ৯ } 
\tl_replace_all:Nnn \l_mytrans_tl { . } { । } 
\tl_replace_all:Nnn \l_mytrans_tl { : } { : } 
}

\ExplSyntaxOff

\begin{document}
\section{\bn{banglay likhi}}
\bn{amader desh bangladesh. amra banglay kotha boli. bangladesh ekTi chOTT desh. eTi dkoShiN ESiyay obsothit.}

\bn{bangladesh ekTi swadhIn desh. 1971 sale ek rokotkShokhI zuddher madhZme ei desh swadhInota lav kore. amader ucit seI swadhInota somunnot rakha.}

\end{document}

答案1

使用 xetex 时,您可以使用 teckit 映射,但我无法通过阅读来判断它的表现如何

在此处输入图片描述

\documentclass{article}
\usepackage{fontspec}


\usepackage{fontspec}
\newfontface\bengalifont{Kalpurush}[Script=Bengali,Mapping=beng]

\newcommand\bn[1]{{\bengalifont#1}}

\begin{document}
\section{\bn{banglay likhi}}
\bn{amader desh bangladesh. amra banglay kotha boli. bangladesh ekTi chOTT desh. eTi dkoShiN ESiyay obsothit.}

\bn{bangladesh ekTi swadhIn desh. 1971 sale ek rokotkShokhI zuddher madhZme ei desh swadhInota lav kore. amader ucit seI swadhInota somunnot rakha.}

\end{document}

我用的beng.mapbeng.tex

https://github.com/davidmjones/brahmic-maps

如果映射需要调整,您可以修改副本beng.map并重新编译teckit_compile

答案2

您没有提供足够的信息来表明您想要实现的目标,但最重要的是,请提供一些指导,说明您想要遵循什么转录标准以及为什么?

  1. 从中选择一个方案https://en.wikipedia.org/wiki/Romanisation_of_Bengali并告知我们。

  2. 通常使用罗马拼音或音译作为输入工具。目前有更好的工具可用。(尝试谷歌输入工具)。

  3. 通过 LaTeX 进行操作的唯一优势是用于短句,比如用于教程?

现在给出一些关于解析的指导原则:

  1. 始终将输入拆分为单词。解析单词会更快,而且如果字符在单词中的特定位置发生变化,您可以对此进行处理。许多书写系统在字母位于单词中间时会以不同于位于单词末尾或开头时的方式组合字母。

  2. 口音总是有问题的,所以你需要先用短词进行测试。

在此处输入图片描述

  1. 例如,您可以在这里看到t-第 10 号的问题。我认为从粗略的角度来看,您会遇到同样的问题r's解析的顺序很重要。

  2. 简单替换可能不是正确的答案。更好的方法是使用正则表达式,最好的方法是使用 Lua Lpeg。

  3. 就我个人而言,我讨厌布鲁塞尔某些官僚机构中的委员会,他们使用过时的思维,因此我会改变概念,并提供一个基于trie结构的算法的词典。它们可以非常快。使用大约 5000 个单词的词典,您可能甚至不会注意到编译器的时间。如果语言的动词结尾会发生变化,则可能会更复杂一些。

  4. 我认为转录的价值在于已经灭绝的文字,比如说安纳托利亚文字或印度河文字,研究人员习惯于使用符号名称和/或数字,比如说在克里特线形文字 B 中,人们可能会写 JAR 来获取

相关内容