#!/usr/local/bin/perl # # The contents of this file are subject to the Mozilla Public # License Version 1.1 (the "License"); you may not use this file # except in compliance with the License. You may obtain a copy of # the License at http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or # implied. See the License for the specific language governing # rights and limitations under the License. # # The Original Code is IBM code. # # The Initial Developer of the Original Code is IBM. # Portions created by IBM are # Copyright (C) International Business Machines # Corporation, 2000. All Rights Reserved. # # Contributor(s): Simon Montagu # # This program generates the header file symmtable.h from the Unicode # informative data file BidiMirroring.txt. # See the comments in that file for details of its structure and contents. # # At the moment we only handle cases where there is another Unicode # character whose glyph can serve as at least an adequate version of # the mirror image of the original character's glyph. This leaves open # the problem of how to provide mirrored glyphs for characters where # this is not the case. # Process the input file $ucp = "[0-9a-fA-F]{4}"; # Unicode code point (4 successive hex digits) as a pattern to match open ( UNICODATA , "< BidiMirroring.txt") || die "Cannot find BidiMirroring.txt.\ The file should be avaiable here:\ http://www.unicode.org/Public/UNIDATA/BidiMirroring.txt\n"; while () { chop; if (/^($ucp); ($ucp) # (.+)/) { # If the line looks like this pattern # (example: 0028; 0029 # LEFT PARENTHESIS) @table[hex($1)]=hex($1) ^ hex($2); # Enter the character XOR its symmetric pair in the table @isblock[hex(substr($1, 0, 2))]=1; # Remember this block } } close(UNICODATA); # Generate license and header open ( OUT , "> ../base/src/symmtable.h") || die "cannot open output ../base/src/symmtable.h file"; $npl = <