抖音、猫眼网页信息加密分析与应对(1)

猫眼电影反爬攻防

文集 移动端网页端爬虫

按照上文操作一直很顺利,直到文章最后


woff1.png

图1.

编码与实际数字不是按照文中所述的那样顺序对应的,所以即使拿到网页的woff文件也无法得到正确的映射关系。相信这是最近刚更新以应对爬虫们的。

解决办法

  1. 更改woff文件后缀为.ttf, 双击打开,便能看到下图。 我的mac,经测试window和mac英文版都不能直接打开
WX20180605-151441@2x.png

图2

图中‘3816207549’的顺序与图一中编码的顺序对应。这样就找到了编码与数字的映射关系。

准确的说图2中的顺序应该是云xml文件中cmap(或者htmx)节点的顺序对应,因为有的woff文件的数字是可重复的总数大于10的。如抖音 下图的顺序与xml中map节点的code属性顺序一致

WX20180605-152440@2x.png
<cmap_format_4 platformID="0" platEncID="3" language="0">
      <map code="0x78" name="x"/><!-- LATIN SMALL LETTER X -->
      <map code="0xe602" name="num_"/><!-- ???? -->
      <map code="0xe603" name="num_1"/><!-- ???? -->
      <map code="0xe604" name="num_2"/><!-- ???? -->
      <map code="0xe605" name="num_3"/><!-- ???? -->
      <map code="0xe606" name="num_4"/><!-- ???? -->
      <map code="0xe607" name="num_5"/><!-- ???? -->
      <map code="0xe608" name="num_6"/><!-- ???? -->
      <map code="0xe609" name="num_7"/><!-- ???? -->
      <map code="0xe60a" name="num_8"/><!-- ???? -->
      <map code="0xe60b" name="num_9"/><!-- ???? -->
      <map code="0xe60c" name="num_4"/><!-- ???? -->
      <map code="0xe60d" name="num_1"/><!-- ???? -->
      <map code="0xe60e" name="num_"/><!-- ???? -->
      <map code="0xe60f" name="num_5"/><!-- ???? -->
      <map code="0xe610" name="num_3"/><!-- ???? -->
      <map code="0xe611" name="num_2"/><!-- ???? -->
      <map code="0xe612" name="num_6"/><!-- ???? -->
      <map code="0xe613" name="num_8"/><!-- ???? -->
      <map code="0xe614" name="num_9"/><!-- ???? -->
      <map code="0xe615" name="num_7"/><!-- ???? -->
      <map code="0xe616" name="num_1"/><!-- ???? -->
      <map code="0xe617" name="num_3"/><!-- ???? -->
      <map code="0xe618" name="num_"/><!-- ???? -->
      <map code="0xe619" name="num_4"/><!-- ???? -->
      <map code="0xe61a" name="num_2"/><!-- ???? -->
      <map code="0xe61b" name="num_5"/><!-- ???? -->
      <map code="0xe61c" name="num_8"/><!-- ???? -->
      <map code="0xe61d" name="num_9"/><!-- ???? -->
      <map code="0xe61e" name="num_7"/><!-- ???? -->
      <map code="0xe61f" name="num_6"/><!-- ???? -->
    </cmap_format_4>
  • 补充

    有些网站猫眼的font文件是不固定的,每个一段时间请求可能不一样。

    以上方法需要人工来识别顺序,所以对这样的网站就行不通了。

解决方法

分析:那些网站工程师们,为了应对爬虫可以制作n多的font文件,但是不变的是最终只有0-9十个字符(即使可能有些肉眼看起来一样实际编码不一样的字符会使这个范围超过10,但我想是有限的)。

验证:

  1. 准备若干个font文件,将是转换成xml文件,如此生成若干个对应的xml文件

    # -*- coding: utf-8 -*-
    
    from fontTools.ttLib import TTFont
    
    
    font = TTFont('./iconfont_9eb9a50.woff')
    font.saveXML('iconfont_9eb9a50.xml')
    
  2. 观察xml文件

     <TTGlyph name="glyph00000"/><!-- contains no outline data -->
    
        <TTGlyph name="num_" xMin="0" yMin="0" xMax="609" yMax="755">
          <contour>
            <pt x="542" y="754" on="1"/>
            <pt x="608" y="754" on="1"/>
            <pt x="608" y="20" on="1"/>
            <pt x="524" y="20" on="1"/>
            <pt x="524" y="651" on="1"/>
            <pt x="454" y="581" on="0"/>
            <pt x="351" y="550" on="1"/>
            <pt x="351" y="635" on="1"/>
            <pt x="405" y="650" on="0"/>
            <pt x="454" y="679" on="1"/>
            <pt x="503" y="710" on="0"/>
          </contour>
          <instructions/>
        </TTGlyph>
    
        <TTGlyph name="num_1" xMin="0" yMin="0" xMax="770" yMax="769">
          <contour>
            <pt x="512" y="768" on="1"/>
            <pt x="643" y="769" on="0"/>
            <pt x="710" y="652" on="1"/>
            <pt x="769" y="554" on="0"/>
            <pt x="769" y="220" on="0"/>
            <pt x="710" y="122" on="1"/>
            <pt x="643" y="6" on="0"/>
            <pt x="380" y="6" on="0"/>
            <pt x="314" y="122" on="1"/>
            <pt x="255" y="220" on="0"/>
            <pt x="255" y="554" on="0"/>
            <pt x="314" y="652" on="1"/>
            <pt x="380" y="769" on="0"/>
          </contour>
          <contour>
            <pt x="512" y="696" on="1"/>
            <pt x="413" y="697" on="0"/>
            <pt x="370" y="591" on="1"/>
            <pt x="339" y="516" on="0"/>
            <pt x="339" y="259" on="0"/>
            <pt x="370" y="183" on="1"/>
            <pt x="413" y="78" on="0"/>
            <pt x="611" y="78" on="0"/>
            <pt x="654" y="183" on="1"/>
            <pt x="685" y="259" on="0"/>
            <pt x="685" y="516" on="0"/>
            <pt x="654" y="591" on="1"/>
            <pt x="611" y="697" on="0"/>
          </contour>
          <instructions/>
        </TTGlyph>
    
        <TTGlyph name="num_2" xMin="0" yMin="0" xMax="770" yMax="769">
          <contour>
            <pt x="519" y="768" on="1"/>
            <pt x="625" y="769" on="0"/>
            <pt x="753" y="661" on="0"/>
            <pt x="754" y="569" on="1"/>
            <pt x="754" y="445" on="0"/>
            <pt x="633" y="404" on="1"/>
            <pt x="698" y="385" on="0"/>
            <pt x="732" y="342" on="1"/>
            <pt x="769" y="298" on="0"/>
            <pt x="769" y="234" on="1"/>
            <pt x="769" y="133" on="0"/>
            <pt x="628" y="5" on="0"/>
            <pt x="514" y="5" on="1"/>
            <pt x="409" y="6" on="0"/>
            <pt x="343" y="59" on="1"/>
            <pt x="265" y="124" on="0"/>
            <pt x="256" y="247" on="1"/>
            <pt x="341" y="247" on="1"/>
            <pt x="345" y="160" on="0"/>
            <pt x="399" y="115" on="1"/>
            <pt x="445" y="78" on="0"/>
            <pt x="514" y="77" on="1"/>
            <pt x="593" y="78" on="0"/>
            <pt x="641" y="123" on="1"/>
            <pt x="684" y="166" on="0"/>
            <pt x="685" y="297" on="0"/>
            <pt x="599" y="370" on="0"/>
            <pt x="522" y="369" on="1"/>
            <pt x="463" y="369" on="1"/>
            <pt x="463" y="435" on="1"/>
            <pt x="519" y="435" on="1"/>
            <pt x="593" y="436" on="0"/>
            <pt x="670" y="502" on="0"/>
            <pt x="670" y="625" on="0"/>
            <pt x="632" y="659" on="1"/>
            <pt x="592" y="696" on="0"/>
            <pt x="520" y="695" on="1"/>
            <pt x="446" y="696" on="0"/>
            <pt x="362" y="616" on="0"/>
            <pt x="355" y="542" on="1"/>
            <pt x="271" y="542" on="1"/>
            <pt x="281" y="649" on="0"/>
            <pt x="350" y="709" on="1"/>
            <pt x="414" y="769" on="0"/>
          </contour>
          <instructions/>
        </TTGlyph>
    
        <TTGlyph name="num_3" xMin="0" yMin="0" xMax="757" yMax="769">
          <contour>
            <pt x="522" y="768" on="1"/>
            <pt x="624" y="768" on="0"/>
            <pt x="755" y="651" on="0"/>
            <pt x="755" y="459" on="0"/>
            <pt x="684" y="382" on="1"/>
            <pt x="645" y="341" on="0"/>
            <pt x="532" y="264" on="1"/>
            <pt x="391" y="169" on="0"/>
            <pt x="371" y="95" on="1"/>
            <pt x="757" y="95" on="1"/>
            <pt x="757" y="20" on="1"/>
            <pt x="267" y="20" on="1"/>
            <pt x="267" y="120" on="0"/>
            <pt x="340" y="202" on="1"/>
            <pt x="383" y="252" on="0"/>
            <pt x="500" y="332" on="1"/>
            <pt x="586" y="394" on="0"/>
            <pt x="615" y="424" on="1"/>
            <pt x="671" y="484" on="0"/>
            <pt x="671" y="556" on="1"/>
            <pt x="671" y="623" on="0"/>
            <pt x="591" y="696" on="0"/>
            <pt x="519" y="696" on="1"/>
            <pt x="443" y="697" on="0"/>
            <pt x="403" y="645" on="1"/>
            <pt x="360" y="595" on="0"/>
            <pt x="358" y="498" on="1"/>
            <pt x="273" y="498" on="1"/>
            <pt x="274" y="622" on="0"/>
            <pt x="411" y="768" on="0"/>
          </contour>
          <instructions/>
        </TTGlyph>
    
        <TTGlyph name="num_4" xMin="0" yMin="0" xMax="797" yMax="755">
          <contour>
            <pt x="598" y="754" on="1"/>
            <pt x="678" y="754" on="1"/>
            <pt x="678" y="255" on="1"/>
            <pt x="797" y="255" on="1"/>
            <pt x="797" y="186" on="1"/>
            <pt x="678" y="186" on="1"/>
            <pt x="678" y="20" on="1"/>
            <pt x="597" y="20" on="1"/>
            <pt x="597" y="186" on="1"/>
            <pt x="228" y="186" on="1"/>
            <pt x="228" y="267" on="1"/>
          </contour>
          <contour>
            <pt x="594" y="644" on="1"/>
            <pt x="299" y="255" on="1"/>
            <pt x="597" y="255" on="1"/>
            <pt x="597" y="644" on="1"/>
          </contour>
          <instructions/>
        </TTGlyph>
    
        <TTGlyph name="num_5" xMin="0" yMin="0" xMax="769" yMax="755">
          <contour>
            <pt x="311" y="754" on="1"/>
            <pt x="738" y="754" on="1"/>
            <pt x="738" y="679" on="1"/>
            <pt x="380" y="679" on="1"/>
            <pt x="356" y="433" on="1"/>
            <pt x="360" y="433" on="1"/>
            <pt x="391" y="470" on="0"/>
            <pt x="439" y="489" on="1"/>
            <pt x="482" y="507" on="0"/>
            <pt x="533" y="506" on="1"/>
            <pt x="637" y="506" on="0"/>
            <pt x="768" y="373" on="0"/>
            <pt x="768" y="254" on="1"/>
            <pt x="768" y="143" on="0"/>
            <pt x="689" y="72" on="1"/>
            <pt x="614" y="6" on="0"/>
            <pt x="506" y="5" on="1"/>
            <pt x="408" y="5" on="0"/>
            <pt x="340" y="58" on="1"/>
            <pt x="263" y="117" on="0"/>
            <pt x="256" y="217" on="1"/>
            <pt x="339" y="217" on="1"/>
            <pt x="345" y="148" on="0"/>
            <pt x="395" y="110" on="1"/>
            <pt x="438" y="78" on="0"/>
            <pt x="507" y="77" on="1"/>
            <pt x="584" y="77" on="0"/>
            <pt x="684" y="176" on="0"/>
            <pt x="685" y="253" on="1"/>
            <pt x="684" y="341" on="0"/>
            <pt x="592" y="438" on="0"/>
            <pt x="512" y="437" on="1"/>
            <pt x="460" y="438" on="0"/>
            <pt x="418" y="415" on="1"/>
            <pt x="375" y="393" on="0"/>
            <pt x="353" y="349" on="1"/>
            <pt x="272" y="349" on="1"/>
          </contour>
          <instructions/>
        </TTGlyph>
    
        <TTGlyph name="num_6" xMin="0" yMin="0" xMax="770" yMax="769">
          <contour>
            <pt x="522" y="768" on="1"/>
            <pt x="726" y="769" on="0"/>
            <pt x="757" y="572" on="1"/>
            <pt x="673" y="572" on="1"/>
            <pt x="649" y="698" on="0"/>
            <pt x="521" y="697" on="1"/>
            <pt x="435" y="698" on="0"/>
            <pt x="386" y="612" on="1"/>
            <pt x="337" y="532" on="0"/>
            <pt x="337" y="406" on="1"/>
            <pt x="337" y="400" on="0"/>
            <pt x="338" y="380" on="1"/>
            <pt x="342" y="380" on="1"/>
            <pt x="370" y="437" on="0"/>
            <pt x="422" y="468" on="1"/>
            <pt x="471" y="500" on="0"/>
            <pt x="536" y="500" on="1"/>
            <pt x="641" y="500" on="0"/>
            <pt x="769" y="365" on="0"/>
            <pt x="769" y="149" on="0"/>
            <pt x="629" y="6" on="0"/>
            <pt x="521" y="5" on="1"/>
            <pt x="387" y="6" on="0"/>
            <pt x="320" y="105" on="1"/>
            <pt x="255" y="199" on="0"/>
            <pt x="256" y="367" on="1"/>
            <pt x="256" y="543" on="0"/>
            <pt x="325" y="653" on="1"/>
            <pt x="397" y="769" on="0"/>
          </contour>
          <contour>
            <pt x="519" y="430" on="1"/>
            <pt x="447" y="430" on="0"/>
            <pt x="351" y="332" on="0"/>
            <pt x="351" y="178" on="0"/>
            <pt x="397" y="129" on="1"/>
            <pt x="443" y="76" on="0"/>
            <pt x="519" y="76" on="1"/>
            <pt x="593" y="77" on="0"/>
            <pt x="640" y="127" on="1"/>
            <pt x="686" y="179" on="0"/>
            <pt x="686" y="336" on="0"/>
            <pt x="641" y="382" on="1"/>
            <pt x="595" y="431" on="0"/>
          </contour>
          <instructions/>
        </TTGlyph>
    
        <TTGlyph name="num_7" xMin="0" yMin="0" xMax="770" yMax="769">
          <contour>
            <pt x="504" y="768" on="1"/>
            <pt x="636" y="768" on="0"/>
            <pt x="704" y="670" on="1"/>
            <pt x="769" y="577" on="0"/>
            <pt x="769" y="406" on="1"/>
            <pt x="769" y="231" on="0"/>
            <pt x="700" y="121" on="1"/>
            <pt x="626" y="6" on="0"/>
            <pt x="503" y="5" on="1"/>
            <pt x="298" y="6" on="0"/>
            <pt x="268" y="202" on="1"/>
            <pt x="352" y="202" on="1"/>
            <pt x="374" y="77" on="0"/>
            <pt x="504" y="76" on="1"/>
            <pt x="589" y="77" on="0"/>
            <pt x="640" y="162" on="1"/>
            <pt x="688" y="244" on="0"/>
            <pt x="688" y="367" on="1"/>
            <pt x="687" y="394" on="1"/>
            <pt x="683" y="394" on="1"/>
            <pt x="655" y="339" on="0"/>
            <pt x="604" y="306" on="1"/>
            <pt x="554" y="274" on="0"/>
            <pt x="489" y="274" on="1"/>
            <pt x="383" y="274" on="0"/>
            <pt x="319" y="344" on="1"/>
            <pt x="256" y="410" on="0"/>
            <pt x="256" y="516" on="1"/>
            <pt x="255" y="626" on="0"/>
            <pt x="396" y="769" on="0"/>
          </contour>
          <contour>
            <pt x="506" y="697" on="1"/>
            <pt x="431" y="698" on="0"/>
            <pt x="339" y="596" on="0"/>
            <pt x="339" y="516" on="1"/>
            <pt x="339" y="439" on="0"/>
            <pt x="429" y="344" on="0"/>
            <pt x="506" y="344" on="1"/>
            <pt x="577" y="344" on="0"/>
            <pt x="626" y="393" on="1"/>
            <pt x="673" y="443" on="0"/>
            <pt x="673" y="596" on="0"/>
            <pt x="628" y="645" on="1"/>
            <pt x="582" y="697" on="0"/>
          </contour>
          <instructions/>
        </TTGlyph>
    
        <TTGlyph name="num_8" xMin="0" yMin="0" xMax="770" yMax="755">
          <contour>
            <pt x="287" y="754" on="1"/>
            <pt x="769" y="754" on="1"/>
            <pt x="769" y="685" on="1"/>
            <pt x="499" y="20" on="1"/>
            <pt x="410" y="20" on="1"/>
            <pt x="683" y="677" on="1"/>
            <pt x="287" y="677" on="1"/>
          </contour>
          <instructions/>
        </TTGlyph>
    
        <TTGlyph name="num_9" xMin="0" yMin="0" xMax="778" yMax="769">
          <contour>
            <pt x="512" y="768" on="1"/>
            <pt x="627" y="769" on="0"/>
            <pt x="692" y="709" on="1"/>
            <pt x="751" y="655" on="0"/>
            <pt x="752" y="574" on="1"/>
            <pt x="752" y="515" on="0"/>
            <pt x="724" y="475" on="1"/>
            <pt x="693" y="432" on="0"/>
            <pt x="636" y="412" on="1"/>
            <pt x="636" y="410" on="1"/>
            <pt x="694" y="395" on="0"/>
            <pt x="734" y="346" on="1"/>
            <pt x="777" y="293" on="0"/>
            <pt x="777" y="222" on="1"/>
            <pt x="777" y="125" on="0"/>
            <pt x="709" y="66" on="1"/>
            <pt x="638" y="6" on="0"/>
            <pt x="384" y="6" on="0"/>
            <pt x="247" y="125" on="0"/>
            <pt x="247" y="222" on="1"/>
            <pt x="247" y="293" on="0"/>
            <pt x="290" y="346" on="1"/>
            <pt x="329" y="395" on="0"/>
            <pt x="388" y="410" on="1"/>
            <pt x="388" y="412" on="1"/>
            <pt x="329" y="432" on="0"/>
            <pt x="300" y="475" on="1"/>
            <pt x="272" y="515" on="0"/>
            <pt x="272" y="574" on="1"/>
            <pt x="272" y="655" on="0"/>
            <pt x="332" y="709" on="1"/>
            <pt x="397" y="769" on="0"/>
          </contour>
          <contour>
            <pt x="512" y="700" on="1"/>
            <pt x="433" y="700" on="0"/>
            <pt x="390" y="659" on="1"/>
            <pt x="351" y="625" on="0"/>
            <pt x="352" y="515" on="0"/>
            <pt x="386" y="480" on="1"/>
            <pt x="426" y="440" on="0"/>
            <pt x="597" y="440" on="0"/>
            <pt x="638" y="480" on="1"/>
            <pt x="672" y="515" on="0"/>
            <pt x="672" y="625" on="0"/>
            <pt x="634" y="659" on="1"/>
            <pt x="589" y="700" on="0"/>
          </contour>
          <contour>
            <pt x="512" y="374" on="1"/>
            <pt x="423" y="374" on="0"/>
            <pt x="375" y="329" on="1"/>
            <pt x="329" y="289" on="0"/>
            <pt x="329" y="157" on="0"/>
            <pt x="422" y="75" on="0"/>
            <pt x="601" y="74" on="0"/>
            <pt x="650" y="117" on="1"/>
            <pt x="694" y="158" on="0"/>
            <pt x="694" y="289" on="0"/>
            <pt x="650" y="329" on="1"/>
            <pt x="600" y="374" on="0"/>
          </contour>
          <instructions/>
        </TTGlyph>
    
        <TTGlyph name="x" xMin="0" yMin="-31" xMax="956" yMax="792">
          <contour>
            <pt x="281" y="543" on="1"/>
            <pt x="254" y="542" on="0"/>
            <pt x="228" y="542" on="1"/>
            <pt x="145" y="542" on="1"/>
            <pt x="127" y="542" on="0"/>
            <pt x="90" y="530" on="0"/>
            <pt x="62" y="505" on="0"/>
            <pt x="44" y="466" on="0"/>
            <pt x="44" y="440" on="1"/>
            <pt x="44" y="364" on="1"/>
            <pt x="956" y="364" on="1"/>
            <pt x="955" y="453" on="1"/>
            <pt x="955" y="466" on="0"/>
            <pt x="945" y="498" on="0"/>
            <pt x="921" y="525" on="0"/>
            <pt x="882" y="543" on="0"/>
            <pt x="852" y="543" on="1"/>
            <pt x="719" y="543" on="1"/>
            <pt x="719" y="446" on="1"/>
            <pt x="281" y="446" on="1"/>
          </contour>
          <contour>
            <pt x="955" y="310" on="1"/>
            <pt x="955" y="258" on="1"/>
            <pt x="956" y="148" on="1"/>
            <pt x="956" y="119" on="0"/>
            <pt x="935" y="82" on="0"/>
            <pt x="904" y="59" on="0"/>
            <pt x="869" y="50" on="0"/>
            <pt x="841" y="49" on="0"/>
            <pt x="826" y="50" on="1"/>
            <pt x="764" y="50" on="1"/>
            <pt x="719" y="178" on="1"/>
            <pt x="280" y="178" on="1"/>
            <pt x="236" y="50" on="1"/>
            <pt x="173" y="50" on="1"/>
            <pt x="153" y="50" on="0"/>
            <pt x="103" y="51" on="0"/>
            <pt x="71" y="70" on="0"/>
            <pt x="52" y="97" on="0"/>
            <pt x="44" y="129" on="0"/>
            <pt x="44" y="143" on="1"/>
            <pt x="44" y="310" on="1"/>
          </contour>
          <contour>
            <pt x="163" y="247" on="1"/>
            <pt x="151" y="247" on="0"/>
            <pt x="133" y="230" on="0"/>
            <pt x="133" y="204" on="0"/>
            <pt x="151" y="187" on="0"/>
            <pt x="176" y="187" on="0"/>
            <pt x="194" y="204" on="0"/>
            <pt x="194" y="230" on="0"/>
            <pt x="176" y="247" on="0"/>
          </contour>
          <contour>
            <pt x="316" y="123" on="1"/>
            <pt x="308" y="97" on="0"/>
            <pt x="302" y="75" on="1"/>
            <pt x="297" y="56" on="0"/>
            <pt x="292" y="38" on="1"/>
            <pt x="284" y="13" on="1"/>
            <pt x="282" y="6" on="0"/>
            <pt x="280" y="-10" on="0"/>
            <pt x="284" y="-23" on="0"/>
            <pt x="299" y="-31" on="0"/>
            <pt x="313" y="-31" on="1"/>
            <pt x="678" y="-31" on="1"/>
            <pt x="701" y="-31" on="0"/>
            <pt x="723" y="-7" on="0"/>
            <pt x="714" y="19" on="1"/>
            <pt x="709" y="32" on="0"/>
            <pt x="700" y="67" on="0"/>
            <pt x="690" y="103" on="0"/>
            <pt x="684" y="123" on="1"/>
          </contour>
          <contour>
            <pt x="336" y="498" on="1"/>
            <pt x="336" y="726" on="1"/>
            <pt x="336" y="737" on="0"/>
            <pt x="341" y="761" on="0"/>
            <pt x="356" y="780" on="0"/>
            <pt x="382" y="792" on="0"/>
            <pt x="403" y="792" on="1"/>
            <pt x="591" y="792" on="1"/>
            <pt x="622" y="792" on="0"/>
            <pt x="663" y="763" on="0"/>
            <pt x="663" y="725" on="1"/>
            <pt x="663" y="498" on="1"/>
          </contour>
          <instructions/>
        </TTGlyph>
    
    
     可以猜测,这些xy的坐标就是决定机器画出什么样的图形(数字)的。那么只要画出的图形是绝对相同的那么这个坐标也应该相同才对。
    

    ​ 经过对比多个xml文件发现:这些xy的矩阵是完全一样的,不一样的只有顺序(经验证这个顺序和以上提到的mac打开ttf文件看到的顺序是一致的)。又发现不同xml文件中,相同矩阵出现在父节点中的序号(位置),对应到mac打开ttf文件看到的序列的相应位置的数字是相同的。

    ​ 到此可以判断:每个矩阵,即每个<TTGlyph>节点代表一个数字,并且相同数字的矩阵在不同font文件中也相同。

  3. 结论

    1. 制作<TTGlyph>矩阵节点到实际数字的映射

    2. 通过html拿到编码值(&#EB83),替换成uniEB83(这个值就是<TTGlyph>矩阵节点的name属性),得到<TTGlyph>子节点的值,查找映射表得到数字

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容