From f50fa60a1b273284d39f1e8b09b6099d477e37ca Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Mon, 11 Mar 2024 20:11:23 -0600 Subject: [PATCH] resolves #2508 lock ttfunk to 1.7.x --- .github/workflows/ci.yml | 7 +++---- CHANGELOG.adoc | 4 ++++ asciidoctor-pdf.gemspec | 1 + lib/asciidoctor/pdf.rb | 6 ++++++ spec/reference/font-otf.pdf | Bin 10164 -> 11109 bytes 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cd4ac1ce9..f9d5f8a4d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -74,9 +74,9 @@ jobs: #- os: ubuntu-latest # ruby: '3.3' # asciidoctor-version: '~> 2.0.0' - #- os: ubuntu-latest - # ruby: '3.3' - # upstream: upstream + - os: ubuntu-latest + ruby: '3.3' + upstream: upstream - os: ubuntu-latest ruby: '3.3' rouge-version: '~> 4.0.0' @@ -149,7 +149,6 @@ jobs: if: matrix.upstream run: | bundle exec ruby scripts/switch-to-asciidoctor-head.rb - bundle exec ruby scripts/switch-to-prawn-head.rb rm -f Gemfile.lock bundle config --local clean true bundle --jobs 3 --retry 3 diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 3c1d27b85..67eb13c75 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -11,6 +11,10 @@ Improvements:: * drop links from entries in TOC (#2505) +Compliance:: + +* lock ttfunk to 1.7.x to avoid requiring Ruby headers (i.e., development libraries) to install gem (#2508) + == 2.3.14 (2024-03-08) - @mojavelinux Improvements:: diff --git a/asciidoctor-pdf.gemspec b/asciidoctor-pdf.gemspec index 161eb7229..997e260e3 100644 --- a/asciidoctor-pdf.gemspec +++ b/asciidoctor-pdf.gemspec @@ -35,6 +35,7 @@ Gem::Specification.new do |s| s.add_runtime_dependency 'asciidoctor', '~> 2.0' s.add_runtime_dependency 'prawn', '~> 2.4.0' + s.add_runtime_dependency 'ttfunk', '~> 1.7.0' # pin ttfunk for compatiblity; prawn gem only pins it to major version s.add_runtime_dependency 'matrix', '~> 0.4' # required until prawn >= 2.5.0 is released s.add_runtime_dependency 'prawn-table', '~> 0.2.0' s.add_runtime_dependency 'prawn-templates', '~> 0.1.0' diff --git a/lib/asciidoctor/pdf.rb b/lib/asciidoctor/pdf.rb index c1de9fabd..75a45d216 100644 --- a/lib/asciidoctor/pdf.rb +++ b/lib/asciidoctor/pdf.rb @@ -1,5 +1,11 @@ # frozen_string_literal: true +proc do + old_verbose, $VERBOSE = $VERBOSE, nil + require 'bigdecimal' # eagerly require bigdecimal without warnings to avoid warning caused by ttfunk 1.7.0 + $VERBOSE = old_verbose +end.call + autoload :Set, 'set' autoload :StringIO, 'stringio' autoload :Tempfile, 'tempfile' diff --git a/spec/reference/font-otf.pdf b/spec/reference/font-otf.pdf index 6e0d5c91ab1231b45c91b8fd7266c423db44af67..cfb3811d99bc7d09cc194754e7afcc03b6120eef 100644 GIT binary patch delta 6484 zcmaKjbyU=kw#5Y`97+K}X{4LMfuTi089Jn;yHj8g{L&%PDM$=mGSUJ=cS$oMlF|qa zL-+f=`~G?FuJ!I&YoE3E{+v^%v96b(f&)oZ75ne?G%@E9F&GRMe-055jGmnOml{%u^XC&;vlCIAVn#okv%?gI-t?WaTgYD2g=_B zld@xTNny6RBMGCXgU=u=(k{MZb5OfizKbmfi&y(V90=;dqrk)VOuYGB?@($)!51r0 zK(4%=Xkk|SJ6KX9zv;hy7rogpE=1hV%>};Zj~FN~NhjkwyDk+(K)#FvJV$g=fT$@h@yBZd<9{ z)MCWs67NQ^856v#Be@%IIZ1N^Le{V`K=de*6zRX#cVIWXMrX~rtQ%)-Z`mPp;guUq zk0t%an0k;S)?r3UDyKNenFRLei!=yQUXdF(x^QD`1`VU$<|I5`fH)fO?o3ECuV-k0OptJ(kZP&+r~cS&QLVC&88YDaD-cc^l*Q~a2w!b3_v+yo>Z!!TUsm4 zwPJIT%rRN%NxS2 zQmb7<=Bgu*o&p>01v>_@sQvYn^~?c zZ`0aoZ(sU6Ep1PDb`LV`428T&SqS)EnPuymd2U>?^ae*NiF47QwiPjFpr2+AnoQS4 zhYHYEs0{BUsY0tvowzFbD{^E_C4+^~-h_C1j;$*(gz{?5PbcT31#I%V_J0 zA}k6l)@v+7s}UWV6TrBpaYD99``48wmOoV)Wafbc7?(fW(`K%$2W1PjOm6r*H74NqpaVnt5S|l-tbu zt8PHQ`Ia?9eQ?t6@7WqS-CHE6!||E!HX-cPC!iv+XJ6LkECP(kC4D<9anxS-mOeUl zmY2kNAA0-qFanZ2{#%-r$CZ z(YUDZS4CcAvboBgMbBgOlL8YDNL!(uCZFr(STTH8AsV#F0qMc`llm@Z9Z@t4uhclDn|qHv81fw!rSTdrh;!E=LmP)V!a2xNd{Mymhjbx{-q9%=Z_p@! zvEY_BB6u>Xoeoi)Jh3P*P{BXpy~^qf*NR{y7$hhE(_j7JOUe2*IKYL_7k3J)0atG& zR2K#97Pw^Otd@Pwsp^=1*7}(xdu>J|)qG={Ijx_L#6WtB5uw-(0m8&{I&wYtM-p|$ zK*3SZIZh34_7;3%Jg4HihD4eTiI;#2!N`ZXy^7tPrOWHmQrXVgfriRcu&0eG!Vcwy zHwsA;BrI*Fhqv<;HNM1Xzx~yYIjGEdSy5l0+Tmz{_rCovSUKPhxp^inWm?M3-zaS) z2$}YA_La`NUZj<|>82FBSsirp_1gGG+<$OOe#=fD^U)&t842)_N?uQRtC+bEXOu&-uls(6b_F1D5 z$x9L^$&_P6;n$TRA)i}zt`j9%+08w@GbI(4H~PV!uU}Y`m}-1yB5@?7_?rkVX(V8Ii59ZKE~Z=W zLT6G^b|WuJMVv(q6>CkKV-A*qU`cpm|N3NePS>J(JL~w@W3S*K^b)UMYmTV~vL+oM z&D|A08TM+f);SZP_z*l3*{S;hzY5Fyi!>(-uBbge2+weoDF$UeXv=~V>MCVQ@u}so za2Kjtu&uO?{0tw41Ls(SoSvW~Vd5jZ&6PRgF`ZYMDqg41UUV>q6&nNVv`P$H_U2sr zv%kGPLwLFuc=-Bt%4;%4@nZ=CagKJ^e z1n!q;H&X_7vFxq%J#xKf)9WYy(tFU#^5PNGG?jUy*=B`>d}N06hN!9%c`FjGkZ zWps+@<57iOU|etOagJQ%M6D(R>4>H6gWA+GYv&Qujr&K`N5&hhbJT{>m3p>G_|~B{ z{nl;+i-{&lPU{5lxPZif*nq5n_UkaYvW)VKqKuLZr@3Te9C(n~Dy+noIwQo?EK10{$wV%I}N1f=d3}cO^(4}dge-Kw@L8b?mNx*Tu(O-U{z+d3LB-5;V~Uu`Z2afbGWn)Jv2V2XiIThorm)- zjh-F7SR+5`z6Rg2-ErI*-%>DbzR;-|f(^~5nCb7Ngm~s)1=bzcZHu&;^R z^4{{I@|p73a{h7(-Li5y-J){c`f_KUMxIhyP3bC$LVwefq@B%j{WqMt?Rwd|**Yeg zCfYY8J64Z%VNWdZ^;Ti$dKd<18|CWHXclv20QnU?VoIb1kW)w55){XjjC44HC(#Tu z_<=HJ$l=}N2fRN3V&s5bHkp39&Mrp$GC!D6NqgtAm0w=|{TUf){ok)hH-|EG^7r|m zL62Ww5uf$9PMDR$NEDPd7$#4cGl?n^xhbBf<$hv`q9uB6yAp0q!p{29-jvt2n{ zfK-a7U5VUbb?V$+3`G^Qfq&j_FnMi5kWEqrEAhMa40kLSs%&WwN@OkSP9>(VE%MG( z_X^@-Q?U{@bleZJE=#RrQt>Q@?@qTf0eS{)1j(B6b-j}l4%_3%Vat}5=4^NK_UC!} zf_;YP%hj*RcF9Qh#M|^Se$pS1qSKFnZ@(lYC0dT_skNM^6FtA&ZZ?VCe08SZ-ohAr z^OM>-l^~~?Chl~?^fSN&Xty1nY<52+ZQnJcP4os(xV%U!C__mz}3k%$>v zJc!ZUJg@s??l!XHRX;M6nCFjE&4i?#UENZ^Y!{E@9_?{W#kuQg`XPrLAYry#wU07zWFTM6k zfzZV=<@cQc-P$@My9^hjypn+ zIlJ_4dEe67)f~fTh)b$MYw~hxOPIR(Q9D4BRt!6<@iEpfF>yNcA#nE3{DMi$O*4n` zYe+KoY}?scVjnWvAGo==xVeoI%KM!EZIIA$s%Wd9X>clNh;!R>V|ua$959U^Y@Qi* z?X_N3G4&IW@9A8kOmj6<^5J6C9B)K@Zn2S@Sj6No^=Pi*dA8=?OmNv#XDN4ccT7ic zUuR}!UmvZshfhnhw`j$SHLAj~EizK+9#~^PXZ4!DWgtU)WUxKtZ3In@(L1uY??#S> zb*yy7KC&W|LX4lLS;L!vBwVRCX?GvwE)sN^=O;e@vF5Ng-De@z1YxwY#L+Y4nH#klf3pNocx_5NI_Nyuk(7Ea;Q>m#gZk1dn z*$HWFvqxgQE`{bPj|pymMJ?D(HM+Yr#LWr>|DCNYh%wxTG^!ho7-cu8SHxxP6YkDC zQ>QQ2yw7gUhNu}O9y0vhs^6YY)D&7hIF-+7BEHHFlsHMS#pB2d0z(|-Y5kMZ`Ht1z zf4B4HN_a}PzfTqg)V=Z-51pM%$6HyDwlKE+xi~e;qHMeE9pU{^gC5P7)4#^xoTJ3L zT`&c9Q}-Fr8t`(8ueDHl9dBsoB}V_yvz2VcTZWea?=-3^KIT5|N}l_r)c4%}`HBecWjGM&H8N5yrp91cNRO@lL`3`K>K_Ep8U+?QlbkqyVYlanO(!Lkp;QSTUsHhMC!g0G1k2g1N!*| zQ){*3_2^maV=j8wqQq8i?SX0b3{MYyKeT}zDDix!;B`2&WVX}ARCyQZGu!Mo zO4nhC?Hj_mYk{wCnAwAH zTm7H(%Pr&WYh5a=(h&rCAU>nQ3Yc%qb-KcAEqBQ34ki@kJMH5WOtJS(x+q3HRWGGy z-CL>_0G@{T_uIXPykO-2>@4)id*|+MZm!uL$>hvnKb`!1tj%-vr~6?N zPC$HhsglN}hrxZjq6^K{nk}klkL70h(>5N0wt;l&$vK4~VUD)q;)KNSmSF}``Sue= zU9(ZI@1k?VAnd;vD265W1WGN|PKwVPvz}rl)~=p_BP$=J%UJk7ua45gShbs}94|;6 zVp!QVUYxrRHbfo^cRTd^l3kuEPEb@h$LXpRzb{&LQLQWuWj z)%z^bV1yz#Z&j|-oXeWn2&e9sv!2s9H7*0N_`!vOmtl3f0PE!)L-3a6c2g??^*|WL zc?x|5C9(WyV97=xz(Cpk@FA{6FVV%Hx%XbDMCdp4^vtJpN@GovDcyhKx=FyH`72Ir znQscX9e5lBH99C|a~>k@>4)G+P_EZ4WqJv zzJ=?3rLd9sc<2N&^mE~FH+s6ebSsiz#;KurGW)17>L0l{0)((n*Nno!M81>@B;Swm z&)=}O-LqE5hW6MIMsd6v)N-?)H5i6}#a>L$_ zl)N}_x@8kxQCm3g-s5Z!_y=2|PbOo|?MwUSj&t zVzT4ae$c=D+x2D-yRLWDcAP#1xBJ_cy>qk6dpnB`SYT*K&RtsCzd6~K61a+tTv$2V z>u$W-3%pzD2Yk41{wdJLyNy#9Hg_vy8e{Xjn}X&i{#BPoV92tFQO z8{IjstReL|U9utmiO^1`H4(p96ag|3y)1&IMZGc&MGrV(XyK%$tjPZed!5$n{l228 zk*Vm_daMyj&ol--*y0=rSpm z0QGV)2s%KAA%Np8GXH1TL$@C5SAcrtmI7T}xOHs2Xs)<+OOIxYR;GYaq_QQk@xa(% zZ<3UfO4$6lcfB!2Wns4Q%3!dJ~plHtycQAP$2)M$OPU+mhO+f zL`|yXzZjCI zZaN?TiN<|dHUnAcOgQagKGjne!n8xj(XUO$i?PC2{p0p{5fk(=Y z{AW|;OJlAAvgImMicoM@S4%z(+$0q-;M5dIg)&s*_anApO-Qh*A{?4CgY)hp?0m)_9UV~?8BL82^Qs+^w!QR5ZpzX0YQ B)DHjv delta 5528 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