Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Firefox/gfx/harfbuzz/src/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 2 kB image not shown  

Quelle  gen-arabic-joining-list.py   Sprache: Python

 
#!/usr/bin/env python3

"""usage: ./gen-arabic-joining-table.py ArabicShaping.txt Scripts.txt

Input files:
https://unicode.org/Public/UCD/latest/ucd/ArabicShaping.txt
https://unicode.org/Public/UCD/latest/ucd/Scripts.txt
"""

import os.path, sys

if len (sys.argv) != 3:
 sys.exit (__doc__)

files = [open (x, encoding='utf-8'for x in sys.argv[1:]]

headers = [[f.readline (), f.readline ()] for f in files]
while files[0].readline ().find ('##################') < 0:
 pass

def read (f):
 mapping = {}
 for line in f:

  j = line.find ('#')
  if j >= 0:
   line = line[:j]

  fields = [x.strip () for x in line.split (';')]
  if len (fields) == 1:
   continue

  uu = fields[0].split ('..')
  start = int (uu[0], 16)
  if len (uu) == 1:
   end = start
  else:
   end = int (uu[1], 16)

  t = fields[1]

  for u in range (start, end + 1):
   mapping[u] = t

 return mapping

def read_joining_uu (f):
 values = set ()
 for line in f:

  if line[0] == '#':
   continue

  fields = [x.strip () for x in line.split (';')]
  if len (fields) == 1:
   continue
  if fields[2] in {'T''U'}:
   continue

  values.add (int (fields[0], 16))

 return sorted (values)

def print_has_arabic_joining (scripts, joining_uu):

 print ("static bool")
 print ("has_arabic_joining (hb_script_t script)")
 print ("{")
 print (" /* List of scripts that have data in arabic-table. */")
 print (" switch ((int) script)")
 print (" {")

 for script in sorted ({scripts[u] for u in joining_uu if scripts[u] not in {'Common''Inherited'}}):
  print (" case HB_SCRIPT_{}:".format (script.upper ()))

 print (" return true;")
 print ()
 print (" default:")
 print (" return false;")
 print (" }")
 print ("}")
 print ()

print ("/* == Start of generated function == */")
print ("/*")
print (" * The following function is generated by running:")
print (" *")
print (" * ./gen-arabic-joining-list.py ArabicShaping.txt Scripts.txt")
print (" *")
print (" * on files with these headers:")
print (" *")
for h in headers:
 for l in h:
  print (" * %s" % (l.strip ()))
print (" */")
print ()
print ("#ifndef HB_OT_SHAPER_ARABIC_JOINING_LIST_HH")
print ("#define HB_OT_SHAPER_ARABIC_JOINING_LIST_HH")
print ()

print_has_arabic_joining (read (files[1]), read_joining_uu (files[0]))

print ()
print ("#endif /* HB_OT_SHAPER_ARABIC_JOINING_LIST_HH */")
print ()
print ("/* == End of generated function == */")

Messung V0.5
C=96 H=98 G=96

¤ Dauer der Verarbeitung: 0.13 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.