logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git

ucstoany.awk (903B)


  1. {
  2. d = 0
  3. for (i = 1; i <= length($0); ++i)
  4. d = d * 16 + index("0123456789ABCDEF", substr($0, i, 1)) - 1
  5. unimap[unimap_len++] = d
  6. }
  7. function readchar() {
  8. name = $2
  9. buf = ""
  10. while (getline < font) {
  11. if ($1 == "ENDCHAR")
  12. break
  13. if ($1 == "ENCODING")
  14. encoding = $2
  15. else
  16. buf = buf $0 "\n"
  17. }
  18. names[encoding] = name
  19. chars[encoding] = buf
  20. }
  21. function printchar(i, encoding) {
  22. if (!(encoding in names))
  23. exit(1)
  24. print "STARTCHAR", names[encoding]
  25. print "ENCODING", i
  26. printf "%s", chars[encoding]
  27. print "ENDCHAR"
  28. }
  29. END {
  30. while (getline < font) {
  31. if ($1 == "STARTCHAR") {
  32. readchar()
  33. continue
  34. }
  35. if ($1 == "CHARS") {
  36. $2 = unimap_len
  37. } else if ($1 == "FONT") {
  38. sub(/-[^-]*-[^-]*$/, "-" charset, $2)
  39. } else if ($1 == "ENDFONT") {
  40. for (i = 0; i < unimap_len; ++i) {
  41. encoding = unimap[i]
  42. printchar(i >= 32 ? encoding : i, encoding)
  43. }
  44. }
  45. print
  46. }
  47. }