X-Git-Url: http://git.shiar.net/unifont.git/blobdiff_plain/98a7daf481cd428bfec5f60bdcb6a6b2d2543583..be1a7f89ff3e6581be4603fcf639164e25d61ee9:/src/hex2sfd-old diff --git a/src/hex2sfd-old b/src/hex2sfd-old new file mode 100755 index 0000000..42a61d7 --- /dev/null +++ b/src/hex2sfd-old @@ -0,0 +1,185 @@ +#!/usr/bin/perl +# +# Copyright (C) 2005 Luis Gonzalez Miranda +# +# hex2sfd created in 2005 by Luis Gonzalez Miranda, http://www.lgm.cl +# +# LICENSE: +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# +# %combining = (); +# open(A, ") { +# chomp; +# $combining{$A} = 1; +# } +# close(A); +# +# Modified by Paul Hardy, June 2008. +# +# The original code above didn't work properly. The replacement code +# below wastes RAM, but it works as a quick fix. +# +@combining = (); +for ($i = 0; $i < 65536; $i++) { + push(@combining, 0); +} +if ($#ARGV < 0) { + open(A, "<", "combining.txt"); +} +else { + open(A, "<", $ARGV[0]); +} +while () { + chomp; + $combining[ hex($_) ] = 1; +} +close(A); +# +# Modified by Paul Hardy, July 2008. +# +# Make pixel 64 units for greatest scale; floating point numbers in +# TrueType have 6 fractional bits, so this works out well (2^6 = 64). +# Also, make size of font a power of 2 (16 * 64) for efficient scaling +# to any point size in TrueType. Made bitmask a variable for easy +# experimenting. +# +$pixel = 64; +$descent = 2 * $pixel; +$ascent = 16 * $pixel - $descent; +$bitmask = 25; # round in x (doesn't really work), corner point selected + +print << "END"; +SplineFontDB: 1.0 +FontName: unifont +FullName: GNU Unifont +FamilyName: unifont +Weight: Medium +Comments: Created from the 2008-07-06 version of the GNU Unifont +Comments: with Luis Gonzalez Miranda's Perl and FontForge scripts. +Comments: See http://www.lgm.cl/trabajos/unifont/index.en.html for +Comments: information on Luis' scripts. +Comments: See http://czyborra.com/unifont +Comments: and http://unifoundry.com/unifont.html +Comments: for information on GNU Unifont. +Comments: See http://fontforge.sf.net for information on FontForge. +Version: 1.00 +ItalicAngle: 0 +UnderlinePosition: -100 +UnderlineWidth: 40 +Ascent: $ascent +Descent: $descent +NeedsXUIDChange: 1 +XUID: [1021 140 1293607838 5610107] +FSType: 0 +PfmFamily: 33 +TTFWeight: 500 +TTFWidth: 5 +Panose: 2 0 6 4 0 0 0 0 0 0 +LineGap: 72 +VLineGap: 0 +OS2WinAscent: 0 +OS2WinAOffset: 1 +OS2WinDescent: 0 +OS2WinDOffset: 1 +HheadAscent: 0 +HheadAOffset: 1 +HheadDescent: 0 +HheadDOffset: 1 +ScriptLang: 1 + 1 latn 1 dflt +Encoding: UnicodeBmp +UnicodeInterp: none +DisplaySize: -24 +AntiAlias: 1 +FitToEm: 1 +WinInfo: 0 50 22 +TeXData: 1 0 0 346030 173015 115343 0 1048576 115343 783286 444596 497025 792723 393216 433062 380633 303038 157286 324010 404750 52429 2506097 1059062 262144 +BeginChars: 65536 3 +END +$count=0; +while() { + chomp; + ($c,$d)=split(/:/); + $width=length($d)/4; + $ptwidth=$pixel * $width; +# if($combining{$c}) { # this was the original "if" + if ($combining[ hex($c) ]) { + $ptwidth = 0; + } + $cn=hex($c); + # Changed "Flags: H" to "Flags: HW" to fix spaces - Paul Hardy, 2008 + print << "END"; +StartChar: $c +Encoding: $cn $cn $count +Width: $ptwidth +Flags: HW +TeX: 0 0 0 0 +Fore +END + + for($i=0;$i<16;$i++) { + $l=substr($d, $i*$width/4, $width/4); + $num=hex($l); + $prev=0; + for($j=0; $j<$width; $j++) { + $x=$width - 1 - $j; + $y=15 - $i; + if($num%2) { + # point at i, width-1-j + if(!$prev) { + $x1=$x * $pixel + $pixel; + $y1=$y * $pixel - $descent; + $x2=$x1 + $pixel; + $y2=$y1 + $pixel; + } + $prev=1; + } else { + if($prev) { + $x2=$x * $pixel + $pixel; + print << "END"; +$x1 $y1 m $bitmask + $x1 $y2 l $bitmask + $x2 $y2 l $bitmask + $x2 $y1 l $bitmask + $x1 $y1 l $bitmask +END + } + $prev=0; + } + $num=int($num/2); + } + if($prev) { + $x2=0; + print << "END"; +$x1 $y1 m $bitmask + $x1 $y2 l $bitmask + $x2 $y2 l $bitmask + $x2 $y1 l $bitmask + $x1 $y1 l $bitmask +END + } + } + print << "END"; +EndSplineSet +EndChar +END + $count++; +} +print << "END"; +EndChars +EndSplineFont +END