[latex3-commits] [git/LaTeX3-latex3-latex2e] master: Southeast Asian scripts - first steps (4d28e4a)

Javier javier at dante.de
Thu Sep 6 20:56:21 CEST 2018


Repository : https://github.com/latex3/latex2e
On branch  : master
Link       : https://github.com/latex3/latex2e/commit/4d28e4a920d8423506e96ae6e70bf84e2dec1a66

>---------------------------------------------------------------

commit 4d28e4a920d8423506e96ae6e70bf84e2dec1a66
Author: Javier <javier at localhost>
Date:   Thu Sep 6 20:56:05 2018 +0200

    Southeast Asian scripts - first steps


>---------------------------------------------------------------

4d28e4a920d8423506e96ae6e70bf84e2dec1a66
 required/babel/README.md            |    4 +-
 required/babel/babel.dtx            |  132 +++++++++++++++++++++--------------
 required/babel/babel.ins            |    2 +-
 required/babel/babel.pdf            |  Bin 652139 -> 653584 bytes
 required/babel/bbcompat.dtx         |    2 +-
 required/babel/samples/lua-thai.pdf |  Bin 0 -> 36019 bytes
 required/babel/samples/lua-thai.tex |   45 ++++++++++++
 7 files changed, 127 insertions(+), 58 deletions(-)

diff --git a/required/babel/README.md b/required/babel/README.md
index b049831..b55f401 100644
--- a/required/babel/README.md
+++ b/required/babel/README.md
@@ -1,4 +1,4 @@
-## Babel 3.23
+## Babel 3.23.1391
 
 This package manages culturally-determined typographical (and other)
 rules, and hyphenation patterns for a wide range of languages.  Many
@@ -122,5 +122,5 @@ respective authors.
 ```
 
 Javier Bezos
-2018/09/02
+2018/09/06
 
diff --git a/required/babel/babel.dtx b/required/babel/babel.dtx
index 24cfe57..d3a374f 100644
--- a/required/babel/babel.dtx
+++ b/required/babel/babel.dtx
@@ -31,7 +31,7 @@
 %
 % \iffalse
 %<*filedriver>
-\ProvidesFile{babel.dtx}[2018/09/02 v3.23 The Babel package]
+\ProvidesFile{babel.dtx}[2018/09/06 v3.23.1391 The Babel package]
 \documentclass{ltxdoc}
 \GetFileInfo{babel.dtx}
 \usepackage{fontspec}
@@ -2859,55 +2859,6 @@ as well as “non-European” digits. Also on the roadmap are R layouts
 (lists, footnotes, tables, column order), page and section numbering,
 and maybe kashida justification.
 
-As to Thai line breaking, here is the basic idea of what \luatex{} can
-do for us, with the Thai patterns and a little script (the final
-version will not be so little, of course). It replaces each
-discretionary by the equivalent to ZWJ.
-
-\begingroup
-\catcode`\_=13 \def_{\string_}
-\begin{verbatim}
-\documentclass{article}
-
-\usepackage{babel}
-
-\babelprovide[import, main]{thai}
-
-\babelfont{rm}{FreeSerif}
-
-\directlua{
-local GLYF = node.id'glyph'
-function insertsp (head)
-  local size = 0
-  for item in node.traverse(head) do
-    local i = item.id
-    if i == GLYF then
-      f = font.getfont(item.font)
-      size = f.size
-    elseif i == 7 then
-      local n = node.new(12, 0)
-      node.setglue(n, 0, size * 1) % 1 is a factor
-      node.insert_before(head, item, n)
-      node.remove(head, item)
-    end
-  end
-end
-
-luatexbase.add_to_callback('hyphenate',
-  function (head, tail)
-    lang.hyphenate(head)
-    insertsp(head)
-  end, 'insertsp')
-}
-
-\begin{document}
-
-(Thai text.)
-
-\end{document}
-\end{verbatim}
-\endgroup
-
 Useful additions would be, for example, time, currency, addresses and
 personal names.\footnote{See for example POSIX, ISO 14652 and the
 Unicode Common Locale Data Repository (CLDR). Those system, however,
@@ -2925,6 +2876,18 @@ chapters), in Hungarian ``from (1)'' is ``(1)-b\H{o}l'', but ``from
 
 \subsection{Tentative and experimental code}
 
+\textbf{Southeast Asian interword spacing}
+
+There is some rudimentary interword spacing for Thai, Lao and Khemer
+in \luatex{} (provided there are hyphenation patters). It is activated
+automatically if a language with of one of these scripts are loaded
+with |\babelprovide|. They are just the first steps. See the sample on 
+the \babel{} repository.
+
+Note you can easily add, modify and remove patterns with 
+|\babelpatterns|. Even if there are no pattern for the language, you 
+can add at least some typical cases.
+
 \medskip
 \textbf{Old stuff}
 
@@ -3865,8 +3828,8 @@ help from Bernd Raichle, for which I am grateful.
 % \section{Tools}
 %
 %    \begin{macrocode}
-%<<version=3.23>>
-%<<date=2018/09/02>>
+%<<version=3.23.1391>>
+%<<date=2018/09/06>>
 %    \end{macrocode}
 %
 % \textbf{Do not use the following macros in \texttt{ldf} files. They
@@ -6744,6 +6707,19 @@ help from Bernd Raichle, for which I am grateful.
 %    \end{macrocode}
 %
 %  \end{macro}
+%
+% \subsection{Interword spacing in Southeast Asian scripts}
+%
+% \textit{At work}.
+%
+%    \begin{macrocode}
+\def\bbl at seascripts{,Thai,Lao,Khmer,} % Malayalam?
+\newcommand\babelinterword[3]{%
+  \def\BabelInterword{#1}%
+  \def\BabelInterwordStretch{#2}%
+  \def\BabelInterwordShrink{#3}}
+\babelinterword{0}{.1}{0}
+%    \end{macrocode}
 % \subsection{Multiencoding strings}
 %
 % \changes{babel~3.9a}{2012/09/05}{Added tentative code for string
@@ -8169,7 +8145,9 @@ help from Bernd Raichle, for which I am grateful.
 %    \end{macrocode}
 %
 % Language and Script values to be used when defining a font or
-% setting the direction are set with the following macros.
+% setting the direction are set with the following macros. It also 
+% activates interword spacing in Southeast Asian scripts if not done 
+% before.
 %
 %    \begin{macrocode}
 \def\bbl at provide@lsys#1{%
@@ -8182,7 +8160,11 @@ help from Bernd Raichle, for which I am grateful.
   \bbl at csarg\bbl at add@list{lsys@#1}{Script=\bbl at cs{sname@#1}}%
   \bbl at ifunset{bbl at lname@#1}{}%
     {\bbl at csarg\bbl at add@list{lsys@#1}{Language=\bbl at cs{lname@#1}}}%
-  \bbl at csarg\bbl at toglobal{lsys@#1}%}%
+  \bbl at csarg\bbl at toglobal{lsys@#1}%
+  \bbl at xin@{\csname bbl at sname@#1\endcsname}{\bbl at seascripts}%
+  \ifin@
+    \@nameuse{bbl at seainterword}%
+  \fi
   \bbl at exp{% TODO - should be global, but even local does its job
            % I'm still not sure -- must investigate 
     \<keys_if_exist:nnF>{fontspec-opentype}{Script/\bbl at cs{sname@#1}}%
@@ -11498,6 +11480,48 @@ help from Bernd Raichle, for which I am grateful.
 %    \end{macrocode}
 %  \end{macro}
 %
+% \section{Southeast Asian scripts}
+%
+%    \begin{macrocode}
+\def\bbl at seainterword{
+  \let\bbl at seainterword\relax
+  \directlua{
+    Babel = Babel or {}
+    function Babel.sea_disc_to_space (head)
+      local useinterword = false
+      local size = 10
+      for item in node.traverse(head) do
+        local i = item.id
+        if i == node.id'glyph' then
+          f = font.getfont(item.font)
+          size = f.size   %% 10 pt = 655360 = 10 * 65536
+          if (item.char > 0x0E00 and item.char < 0x0E7F) or   % Thai
+             (item.char > 0x0E80 and item.char < 0x0EFF) or   % Lao
+             (item.char > 0x1780 and item.char < 0x17FF) then % Khemer
+            useinterword = true
+          else
+            useinterword = false
+          end
+        end
+        if i == 7 and item.subtype == 3 and useinterword then
+          local n = node.new(12, 13)
+          node.setglue(n, \BabelInterword * size,
+                          \BabelInterwordStretch * size,
+                          \BabelInterwordShrink * size)
+          node.insert_before(head, item, n)
+          node.remove(head, item)
+        end
+      end
+    end
+    luatexbase.add_to_callback('hyphenate',
+      function (head, tail)
+        lang.hyphenate(head)
+        Babel.sea_disc_to_space(head)
+      end,
+      'Babel.sea_disc_to_space')
+}}
+%    \end{macrocode}
+%
 % Common stuff.
 %
 %    \begin{macrocode}
diff --git a/required/babel/babel.ins b/required/babel/babel.ins
index 3601783..bd1f7ae 100644
--- a/required/babel/babel.ins
+++ b/required/babel/babel.ins
@@ -26,7 +26,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
 %%
-\def\filedate{2018/09/02}
+\def\filedate{2018/09/06}
 \def\batchfile{babel.ins}
 \input docstrip.tex
 
diff --git a/required/babel/babel.pdf b/required/babel/babel.pdf
index d473e91..63e9937 100644
Binary files a/required/babel/babel.pdf and b/required/babel/babel.pdf differ
diff --git a/required/babel/bbcompat.dtx b/required/babel/bbcompat.dtx
index ca8cc6c..f62dcba 100644
--- a/required/babel/bbcompat.dtx
+++ b/required/babel/bbcompat.dtx
@@ -30,7 +30,7 @@
 %
 % \iffalse
 %<*dtx>
-\ProvidesFile{bbcompat.dtx}[2018/09/02 v3.23]
+\ProvidesFile{bbcompat.dtx}[2018/09/06 v3.23.1391]
 %</dtx>
 %
 %% File 'bbcompat.dtx'
diff --git a/required/babel/samples/lua-thai.pdf b/required/babel/samples/lua-thai.pdf
new file mode 100644
index 0000000..d9bffc4
Binary files /dev/null and b/required/babel/samples/lua-thai.pdf differ
diff --git a/required/babel/samples/lua-thai.tex b/required/babel/samples/lua-thai.tex
new file mode 100644
index 0000000..58d5115
--- /dev/null
+++ b/required/babel/samples/lua-thai.tex
@@ -0,0 +1,45 @@
+\documentclass[twocolumn]{article}
+
+\usepackage{babel}
+
+\babelprovide[main,import,maparabic]{thai}
+
+\babelfont{rm}{FreeSerif}
+
+\usepackage{microtype}
+\babelinterword{0}{.1}{0}
+
+\begin{document}
+
+\title{กรุงเทพมหานคร}
+\author{From Wikipedia}
+
+\maketitle
+
+\textbf{กรุงเทพมหานคร} เป็นเมืองหลวงและนครที่มีประชากรมากที่สุดของประเทศไทย เป็นศูนย์กลางการปกครอง การศึกษา การคมนาคมขนส่ง การเงินการธนาคาร การพาณิชย์ การสื่อสาร และความเจริญของประเทศ เป็นเมืองที่มีชื่อยาวที่สุดในโลก ตั้งอยู่บนสามเหลี่ยมปากแม่น้ำเจ้าพระยา มีแม่น้ำเจ้าพระยาไหลผ่านและแบ่งเมืองออกเป็น 2 ฝั่ง คือ ฝั่งพระนครและฝั่งธนบุรี กรุงเทพมหานครมีพื้นที่ทั้งหมด 1,568.737 ตร.กม. มีประชากรตามทะเบียนราษฎรกว่า 5 ล้านคน ทำให้กรุงเทพมหานครเป็นเอกนคร (Primate City) จัด มีผู้กล่าวว่า กรุงเทพมหานครเป็น "เอกนครที่สุดในโลก" เพราะมีประชากรมากกว่านครที่มีประชากรมากเป็นอันดับ 2 ถึง 40 เท่า[3]
+
+มหาวิทยาลัยลัฟเบอระ (Loughborough University) จัดกรุงเทพมหานครว่าเป็นนครโลกระดับแอลฟาลบ[4] กรุงเทพมหานครยังเป็นเมืองที่มีตึกระฟ้ามากที่สุดเป็นอันดับที่ 7 ของโลก[5] มีสถานที่ท่องเที่ยวหลายแห่ง เช่น พระบรมมหาราชวัง พระที่นั่งวิมานเมฆ วัดต่าง ๆ นอกจากนี้ยังมีแหล่งจับจ่ายใช้สอยและค้าขายที่สำคัญซึ่งดึงดูดนักท่องเที่ยวต่างชาติมากมาย โดยในปี พ.ศ. 2555 องค์กรการท่องเที่ยวโลก (UNWTO) ได้จัดอันดับกรุงเทพมหานครเป็นเมืองที่มีคนเดินทางเข้าเป็นอันดับที่ 10 ของโลกและเป็นอันดับที่ 2 ของเอเชีย โดยมีคนเดินทางมากกว่า 26.5 ล้านคน[6] นอกจากนี้จากการจัดอันดับการใช้จ่ายผ่านบัตรเครดิตมาสเตอร์การ์ด ประจำปี พ.ศ. 2557 กรุงเทพมหานครมีการใช้จ่ายผ่านบัตรเครดิตของนักท่องเที่ยวถึง 16.42 ล้านดอลลาร์ เป็นอันดับที่ 2 ของโลก รองจากกรุงลอนดอน สหราชอาณาจักร เท่านั้น[7]
+
+กรุงเทพมหานครเป็นเขตปกครองพิเศษของประเทศไทย มิได้มีสถานะเป็นจังหวัด คำว่า "กรุงเทพมหานคร" นั้นยังใช้เรียกองค์กรปกครองส่วนท้องถิ่นของกรุงเทพมหานครอีกด้วย กรุงเทพมหานครมีการเลือกตั้งผู้บริหารท้องถิ่นโดยตรง แต่ปัจจุบันผู้บริหารกรุงเทพมหานครมาจากการแต่งตั้ง
+
+ในสมัยกรุงศรีอยุธยา กรุงเทพมหานครยังเป็นเพียงสถานีการค้าขนาดเล็กอยู่ที่ปากแม่น้ำเจ้าพระยา ต่อมามีขนาดเพิ่มขึ้นและเป็นที่ตั้งของเมืองหลวง 2 แห่งคือ กรุงธนบุรี ในปี พ.ศ. 2311 และกรุงรัตนโกสินทร์ใน พ.ศ. 2325 กรุงเทพมหานครเป็นหัวใจของการทำให้ประเทศสยามทันสมัยและเป็นเวทีกลางของการต่อสู้ทางการเมืองของประเทศตลอดคริสต์ศตวรรษที่ 20 นครเติบโตอย่างรวดเร็วและปัจจุบันมีผลกระทบสำคัญต่อการเมือง เศรษฐกิจ การศึกษา สื่อและสังคมสมัยใหม่ของไทย ในช่วงที่การลงทุนในเอเชียรุ่งเรือง ทำให้บรรษัทข้ามชาติจำนวนมากเข้ามาตั้งสำนักงานใหญ่ภูมิภาคในกรุงเทพมหานคร ทำให้กรุงเทพมหานครเป็นกำลังหลักทางการเงินและธุรกิจในภูมิภาค นอกจากนี้ยังเป็นศูนย์กลางการขนส่งและสาธารณสุขระหว่างประเทศและกำลังเติบโตเป็นศูนย์กลางศิลปะ แฟชัน และการบันเทิงในภูมิภาค อย่างไรก็ดี การเติบโตอย่างรวดเร็วของกรุงเทพมหานครขาดการวางผังเมือง ทำให้ระบบโครงสร้างพื้นฐานไม่เพียงพอ ถนนที่จำกัดและการใช้รถส่วนบุคคลอย่างกว้างขวางส่งผลให้เกิดปัญหาจราจรแออัดเรื้อรัง
+
+\section{ประวัติ}
+
+พื้นที่บริเวณกรุงเทพมหานครในปัจจุบัน เดิมเป็นที่ตั้งของเมืองธนบุรีศรีมหาสมุทร ชาวต่างชาติเรียกกันว่า "บางกอก" มาตั้งแต่สมัยกรุงศรีอยุธยา[8] มีความสำคัญเนื่องจากเป็นเส้นทางออกสู่ทะเลและติดต่อค้าขายกับอาณาจักรต่าง ๆ เป็นเมืองหน้าด่านขนอน คอยดูแลเก็บภาษีกับเรือสินค้าทุกลำที่ผ่านเข้าออก ส่วนบริเวณปากน้ำตรงอ่าวไทย เรียกกันว่า "นิวอัมสเตอร์ดัม" มีชุมชนใหญ่และโกดังของชาวต่างประเทศไว้สำหรับพักสินค้า ปัจจุบันคือพื้นที่บริเวณอำเภอพระประแดง[8]
+
+ที่มาของคำว่า "บางกอก" นั้น มีข้อสันนิษฐานว่าอาจมาจากการที่แม่น้ำเจ้าพระยาคดเคี้ยวไปมา บางแห่งมีสภาพเป็นเกาะเป็นโคก จึงเรียกกันว่า "บางเกาะ" หรือ "บางโคก" หรือไม่ก็เป็นเพราะบริเวณนี้มีต้นมะกอกอยู่มาก จึงเรียกว่า "บางมะกอก" โดยคำว่า "บางมะกอก" มาจากวัดอรุณ ซึ่งเป็นชื่อเดิมของวัดดังกล่าว และต่อมากร่อนคำลงจึงเหลือแต่คำว่าบางกอก[8][9]
+
+ต่อมาเมื่อถึงคราวเสียกรุงศรีอยุธยาใน พ.ศ. 2310 หลังการกอบกู้อิสรภาพจากพม่า สมเด็จพระเจ้ากรุงธนบุรีทรงสถาปนาเมืองธนบุรีศรีมหาสมุทรให้เป็นราชธานีแห่งใหม่ เมื่อวันที่ 3 ตุลาคม พ.ศ. 2313[8] ครั้นสิ้นรัชกาลสมเด็จพระเจ้ากรุงธนบุรี ในวันที่ 6 เมษายน พ.ศ. 2325 สมเด็จเจ้าพระยามหากษัตริย์ศึกได้ขึ้นเสวยราชสมบัติ ทรงพระนามว่าพระบาทสมเด็จพระพุทธยอดฟ้าจุฬาโลกมหาราช ปฐมกษัตริย์แห่งราชวงศ์จักรี มีพระราชดำริว่า ฟากตะวันออกของกรุงธนบุรีมีชัยภูมิดีกว่าตะวันตก เพราะมีลำน้ำเป็นขอบเขตอยู่กว่าครึ่ง หากข้าศึกยกมาติดถึงชานพระนคร ก็จะต่อสู้ป้องกันได้ง่ายกว่าอยู่ข้างตะวันตก จึงโปรดเกล้าฯ ให้สร้างกรุงรัตนโกสินทร์ขึ้นทางฝั่งตะวันออกของแม่น้ำเจ้าพระยาให้เป็นราชธานีแห่งใหม่ โดยสืบทอดศิลปกรรมและสถาปัตยกรรมจากพระราชวังหลวงของกรุงศรีอยุธยา[8]
+
+พระองค์มีพระบรมราชโองการให้พระยาธรรมาธิกรณ์กับพระยาวิจิตรนาวี เป็นแม่กองคุมช่างและไพร่ไปวัดกะที่ดินเพื่อสร้างพระนครใหม่ในวันที่ 8 เมษายน พ.ศ. 2325 ทรงประกอบพิธียกเสาหลักเมือง เมื่อวันอาทิตย์ เดือน 6 ขึ้น 10 ค่ำ ย่ำรุ่งแล้ว 9 บาท (54 นาที) ปีขาล จ.ศ. 1144 จัตวาศก ตรงกับวันที่ 21 เมษายน พ.ศ. 2325 เวลา 6.54 น.[8] และทรงประกอบพระราชพิธีปราบดาภิเษกในวันที่ 13 มิถุนายน พ.ศ. 2325[10]
+
+ต่อมาในรัชสมัยของพระบาทสมเด็จพระจอมเกล้าเจ้าอยู่หัว ทรงเปลี่ยนชื่อพระนครจาก \textbf{บวรรัตนโกสินทร์} เป็น \textbf{อมรรัตนโกสินทร์} และมีฐานะในการปกครองส่วนท้องถิ่นเป็น \textbf{จังหวัดพระนคร}[11]
+
+ในรัชสมัยของพระบาทสมเด็จพระจอมเกล้าเจ้าอยู่หัว โปรดเกล้าฯ ให้ตัดถนนใหม่ขึ้น ทรงดำริให้ตัดถนนเจริญกรุง เป็นถนนเส้นแรกในกรุงเทพมหานคร ก่อสร้างเมื่อวันที่ 5 กุมภาพันธ์ พ.ศ. 2404[12] และเปลี่ยนรูปแบบผังเมืองกรุงเทพมหานครเฉกเช่นอารยประเทศ เนื่องจากในสมัยนั้นสยามประเทศถูกคุกคามจากมหาอำนาจยุโรป และตรงจุดนี้เป็นหนึ่งในข้ออ้างที่มหาอำนาจนำมาใช้เพื่อแทรกแซงและคุกคามสยามประเทศ ภายหลัง ต่างชาติยุโรปเองได้ยอมรับกรุงเทพมหานครว่า เป็นหนึ่งในเมืองที่มีผังเมืองงดงามที่สุดในโลกในสมัยนั้น[13]
+
+\bigskip
+
+Typeset with babel \csname bbl at version\endcsname.
+
+\end{document}
\ No newline at end of file





More information about the latex3-commits mailing list