summaryrefslogtreecommitdiff
path: root/macros/xetex/latex/xepersian-hm/xepersian-hm.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/xetex/latex/xepersian-hm/xepersian-hm.dtx')
-rw-r--r--macros/xetex/latex/xepersian-hm/xepersian-hm.dtx46
1 files changed, 27 insertions, 19 deletions
diff --git a/macros/xetex/latex/xepersian-hm/xepersian-hm.dtx b/macros/xetex/latex/xepersian-hm/xepersian-hm.dtx
index d762f805d3..582a05d638 100644
--- a/macros/xetex/latex/xepersian-hm/xepersian-hm.dtx
+++ b/macros/xetex/latex/xepersian-hm/xepersian-hm.dtx
@@ -67,7 +67,7 @@ make time to fix.
% }^^A
% }
%
-% \date{Released \quad 2020-05-12 \quad v0.5e}
+% \date{Released \quad 2020-05-20 \quad v0.5f}
%
% \maketitle
%
@@ -96,7 +96,7 @@ make time to fix.
\RequirePackage{zref-savepos}[2020-03-03]
\RequirePackage{xepersian}
\ExplSyntaxOn
-\ProvidesExplPackage {xepersian-hm} {2020-05-12} {0.5e} { Fixes~issues~in~xepersian~package }
+\ProvidesExplPackage {xepersian-hm} {2020-05-20} {0.5f} { Fixes~issues~in~xepersian~package }
\int_const:Nn \c_xephm_ksh_int {"0640} % kashida
\int_const:Nn \c_xephm_lrm_int {"200E} % left-right-mark
@@ -209,21 +209,27 @@ make time to fix.
\l_xephm_lig_rlig_tl , { \l_xephm_lig_rlig_clist } ,
}
-\msg_new:nnn { xepersian-hm } { kashida-character-is-not-available-in-the-main-font }
+\msg_new:nnn { xepersian-hm } { error-kashida-character-is-not-available-in-the-main-font }
{
Sorry,~ kashida~ character~ is~ not~ available~ in~ the~ main~ font~!
}
-\msg_new:nnn { xepersian-hm } { value-not-available-for-kashida-option }
+\msg_new:nnn { xepersian-hm } { error-value-not-available-for-kashida-option }
{
Sorry,~ value~ `#1'~ is~ not~ available~ for~ `Kashida'~ option~ yet~!
}
-\msg_new:nnn { xepersian-hm } { specify-value-for-kashida-option }
+\msg_new:nnn { xepersian-hm } { error-specify-value-for-kashida-option }
{
Sorry,~ you~ must~ specify~ a~ value~ for~ `Kashida'~ option~ yet~!
}
+\msg_new:nnn { xepersian-hm } { warning-experimental-feature }
+ {
+ Please~ note~ that~ the~ feature~ `#1'~ is~ still~ experimental~
+ and~ is~ not~ regarded~ as~ stable.
+ }
+
\keys_define:nn { xepersian-hm }
{
Kashida .code:n =
@@ -242,7 +248,7 @@ make time to fix.
\int_set:Nn \l_xephm_kashida_slot_int { \xetex_charglyph:D \c_xephm_ksh_int }
\int_compare:nT { \l_xephm_kashida_slot_int = \c_zero_int }
{
- \msg_error:nn { xepersian-hm } { kashida-character-is-not-available-in-the-main-font }
+ \msg_error:nn { xepersian-hm } { error-kashida-character-is-not-available-in-the-main-font }
}
}
}
@@ -251,7 +257,7 @@ make time to fix.
\tl_set:Nn \l_xephm_gap_filler_tl { \l_xephm_stretch_hrule_tl }
}
} { } { \tl_set:Nx \l_xephm_gap_filler_tl { #1 } }
- \tl_if_empty:NT \l_xephm_gap_filler_tl { \msg_error:nn { xepersian-hm } { specify-value-for-kashida-option } }
+ \tl_if_empty:NT \l_xephm_gap_filler_tl { \msg_error:nn { xepersian-hm } { error-specify-value-for-kashida-option } }
\bool_set_true:N \l_xephm_kashida_hm_fix_bool
} ,
@@ -345,7 +351,7 @@ make time to fix.
% \begin{macrocode}
%<*kashida-xepersian-hm-def>
\ExplSyntaxOn
-\ProvidesExplFile {kashida-xepersian-hm.def} {2020-05-12} {0.5e} { Fixes~implementation~of~Kashida~in~xepersian~package }
+\ProvidesExplFile {kashida-xepersian-hm.def} {2020-05-20} {0.5f} { Fixes~implementation~of~Kashida~in~xepersian~package }
\newXeTeXintercharclass \c_xephm_d_charclass % dual-joiner class
\newXeTeXintercharclass \c_xephm_l_charclass % lam
@@ -430,17 +436,15 @@ make time to fix.
\mode_leave_vertical:
\tex_global:D \tex_advance:D \l_xephm_counter_int \c_one_int
- \tl_set:Nx \l_xephm_pos_tl { pos_\tex_romannumeral:D \l_xephm_counter_int }
- \tl_set:Nx \l_xephm_zref_tl { zref_\tex_romannumeral:D \l_xephm_counter_int }
+ \tl_set:Nx \l_xephm_pos_tl { p\tex_romannumeral:D \l_xephm_counter_int }
+ \tl_set:Nx \l_xephm_zref_tl { z\tex_romannumeral:D \l_xephm_counter_int }
\zsaveposx{x_i_\l_xephm_zref_tl}
\tl_set:Nx \l_tmpa_tl
{
\iow_now:cx { @auxout }
{
- \ExplSyntaxOn
- \tl_gset:Nn \exp_after:wN \token_to_str:N \cs:w get_x_i\l_xephm_pos_tl \cs_end: { \zposx{ x_i_\l_xephm_zref_tl } }
- \ExplSyntaxOff
+ \token_to_str:N \gdef \exp_after:wN \token_to_str:N \cs:w xi\l_xephm_pos_tl \cs_end: { \zposx{ x_i_\l_xephm_zref_tl } }
}
}
\l_tmpa_tl
@@ -450,19 +454,17 @@ make time to fix.
{
\iow_now:cx { @auxout }
{
- \ExplSyntaxOn
- \tl_gset:Nn \exp_after:wN \token_to_str:N \cs:w get_x_f\l_xephm_pos_tl \cs_end: { \zposx{ x_f_\l_xephm_zref_tl } }
- \ExplSyntaxOff
+ \token_to_str:N \gdef \exp_after:wN \token_to_str:N \cs:w xf\l_xephm_pos_tl \cs_end: { \zposx{ x_f_\l_xephm_zref_tl } }
}
}
\l_tmpa_tl
\exp_after:wN
\if_meaning:w
- \cs:w get_x_i\l_xephm_pos_tl \cs_end: \tex_relax:D
+ \cs:w xi\l_xephm_pos_tl \cs_end: \tex_relax:D
\else:
\dim_set:Nn \l_xephm_diff_pos_dim
{
- \dim_eval:n { \cs:w get_x_i\l_xephm_pos_tl \cs_end: sp - \cs:w get_x_f\l_xephm_pos_tl \cs_end: sp }
+ \dim_eval:n { \cs:w xi\l_xephm_pos_tl \cs_end: sp - \cs:w xf\l_xephm_pos_tl \cs_end: sp }
}
\dim_compare:nTF { \l_xephm_diff_pos_dim == 0sp }
{ }
@@ -590,7 +592,13 @@ make time to fix.
\XeTeXinterchartoks \c_xephm_l_charclass \c_xephm_a_charclass =
{ }
}
- } { } { \msg_error:nnx { xepersian-hm } { value-not-available-for-kashida-option } { \l_xephm_gap_filler_tl } }
+ }
+ {
+ \msg_warning:nnn { xepersian-hm } { warning-experimental-feature } { Kashida=glyph }
+ }
+ {
+ \msg_error:nnx { xepersian-hm } { error-value-not-available-for-kashida-option } { \l_xephm_gap_filler_tl }
+ }
\NewDocumentCommand \KashidaHMFixOn {} { \bool_set_true:N \l_xephm_kashida_hm_fix_bool }
\NewDocumentCommand \KashidaHMFixOff {} { \bool_set_false:N \l_xephm_kashida_hm_fix_bool }