summaryrefslogtreecommitdiff
path: root/systems/doc/pdftex/samplepdftex/protcode.tex
diff options
context:
space:
mode:
Diffstat (limited to 'systems/doc/pdftex/samplepdftex/protcode.tex')
-rw-r--r--systems/doc/pdftex/samplepdftex/protcode.tex93
1 files changed, 93 insertions, 0 deletions
diff --git a/systems/doc/pdftex/samplepdftex/protcode.tex b/systems/doc/pdftex/samplepdftex/protcode.tex
new file mode 100644
index 0000000000..ab24297645
--- /dev/null
+++ b/systems/doc/pdftex/samplepdftex/protcode.tex
@@ -0,0 +1,93 @@
+% $Id: protcode.tex 883 2022-06-08 17:30:43Z karl $
+% Public domain. Originally written by Han The THanh.
+% Example \lpcode and \rpcode ("left/right protrusion code") settings
+% for per-glyph tuning of protrusion, and a macro to execute them
+%
+% As written, this file does nothing but make definitions.
+% Adapt and adjust for your needs.
+%
+% Much more in the LaTeX microtype package (https://ctan.org/pkg/microtype).
+
+\def\setprotcode#1{%
+ % this macro works with OT1 encoding only -- mostly ASCII,
+ % but assumes OT1 for quotes and dashes.
+ \rpcode#1`\!=200
+ \rpcode#1`\,=700
+ \rpcode#1`\-=700
+ \rpcode#1`\.=700
+ \rpcode#1`\;=500
+ \rpcode#1`\:=500
+ \rpcode#1`\?=200
+ \lpcode#1`\`=700
+ \rpcode#1`\'=700
+ \lpcode#1 92=500 % ``
+ \rpcode#1 34=500 % ''
+ \rpcode#1 123=300 % --
+ \rpcode#1 124=200 % ---
+ \rpcode#1`\)=50
+ \rpcode#1`\A=50
+ \rpcode#1`\F=50
+ \rpcode#1`\K=50
+ \rpcode#1`\L=50
+ \rpcode#1`\T=50
+ \rpcode#1`\V=50
+ \rpcode#1`\W=50
+ \rpcode#1`\X=50
+ \rpcode#1`\Y=50
+ \rpcode#1`\k=50
+ \rpcode#1`\r=50
+ \rpcode#1`\t=50
+ \rpcode#1`\v=50
+ \rpcode#1`\w=50
+ \rpcode#1`\x=50
+ \rpcode#1`\y=50
+ \lpcode#1`\(=50
+ \lpcode#1`\A=50
+ \lpcode#1`\J=50
+ \lpcode#1`\T=50
+ \lpcode#1`\V=50
+ \lpcode#1`\W=50
+ \lpcode#1`\X=50
+ \lpcode#1`\Y=50
+ \lpcode#1`\v=50
+ \lpcode#1`\w=50
+ \lpcode#1`\x=50
+ \lpcode#1`\y=0
+ \adjustprotcode#1\relax
+}
+
+\newif\ifneedadjustprotcode
+\newbox\boxA
+\newcount\countA
+\newcount\countB
+\def\adjustprotcode#1{%
+ \needadjustprotcodefalse
+ \ifnum\pdftexversion = 14
+ \ifnum \expandafter`\pdftexrevision > `g
+ \needadjustprotcodetrue
+ \fi
+ \else\ifnum\pdftexversion > 14
+ \needadjustprotcodetrue
+ \fi \fi
+ \ifneedadjustprotcode
+ \countA=0
+ \loop
+ \ifcase\lpcode#1\countA\else
+ \adjustcp\lpcode#1\countA
+ \fi
+ \ifcase\rpcode#1\countA\else
+ \adjustcp\rpcode#1\countA
+ \fi
+ \advance\countA 1
+ \ifnum\countA < 256 \repeat
+ \fi
+}
+\def\adjustcp#1#2#3{%
+ \setbox\boxA=\hbox{%
+ \ifx#2\font\else#2\fi
+ \char#3}%
+ \countB=\wd\boxA
+ \multiply\countB #1#2#3\relax
+ \divide\countB \fontdimen6 #2\relax
+ #1#2#3=\countB\relax
+}