support for construction of Isabelle fonts;
authorwenzelm
Thu, 22 Nov 2018 23:11:12 +0100
changeset 69330 6a33b12f8573
parent 69329 8bbde4dba926
child 69331 85cafb6e4db0
support for construction of Isabelle fonts;
src/Pure/Tools/isabelle_fonts.scala
src/Pure/build-jars
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Pure/Tools/isabelle_fonts.scala	Thu Nov 22 23:11:12 2018 +0100
@@ -0,0 +1,139 @@
+/*  Title:      Pure/Tools/isabelle_fonts.scala
+    Author:     Makarius
+
+Construction of Isabelle fonts.
+*/
+
+package isabelle
+
+
+object Isabelle_Fonts
+{
+  /* relevant codepoint ranges */
+
+  object Range
+  {
+    def plain_text: Seq[Int] =
+      (0x0020 to 0x007e) ++  // ASCII
+      (0x00a0 to 0x024f) ++  // Latin Extended-A/B
+      (0x0400 to 0x04ff) ++  // Cyrillic
+      (0x0590 to 0x05ff) ++  // Hebrew (non-mono)
+      (0x0600 to 0x06ff) ++  // Arabic
+      Seq(
+        0x2018,  // single quote
+        0x2019,  // single quote
+        0x201a,  // single quote
+        0x201c,  // double quote
+        0x201d,  // double quote
+        0x201e,  // double quote
+        0x2039,  // single guillemet
+        0x203a,  // single guillemet
+        0x204b,  // reversed pilcrow
+        0x20ac,  // Euro
+        0xfb01,  // ligature fi
+        0xfb02,  // ligature fl
+        0xfffd,  // replacement character
+      )
+
+    def symbols: Seq[Int] =
+      Seq(
+        0x05,  // X
+        0x06,  // Y
+        0x07,  // EOF
+        0x7f,  // DEL
+        0xac,  // logicalnot
+        0xb0,  // degree
+        0xb1,  // plusminus
+        0xb7,  // periodcentered
+        0xd7,  // multiply
+        0xf7,  // divide
+      ) ++
+      (0x0370 to 0x03ff) ++  // Greek (pseudo math)
+      Seq(
+        0x2010,  // hyphen
+        0x2013,  // dash
+        0x2014,  // dash
+        0x2015,  // dash
+        0x2020,  // dagger
+        0x2021,  // double dagger
+        0x2022,  // bullet
+        0x2026,  // ellipsis
+        0x2030,  // perthousand
+        0x2032,  // minute
+        0x2033,  // second
+        0x2038,  // caret
+        0x20cd,  // currency symbol
+      ) ++
+      (0x2100 to 0x214f) ++  // Letterlike Symbols
+      (0x2190 to 0x21ff) ++  // Arrows
+      (0x2200 to 0x22ff) ++  // Mathematical Operators
+      (0x2300 to 0x23ff) ++  // Miscellaneous Technical
+      Seq(
+        0x2423,  // graphic for space
+        0x2500,  // box drawing
+        0x2501,  // box drawing
+        0x2508,  // box drawing
+        0x2509,  // box drawing
+        0x2550,  // box drawing
+      ) ++
+      (0x25a0 to 0x25ff) ++  // Geometric Shapes
+      Seq(
+        0x261b,  // black right pointing index
+        0x2660,  // spade suit
+        0x2661,  // heart suit
+        0x2662,  // diamond suit
+        0x2663,  // club suit
+        0x266d,  // musical flat
+        0x266e,  // musical natural
+        0x266f,  // musical sharp
+        0x2756,  // UNDEFINED
+        0x2759,  // BOLD
+        0x27a7,  // DESCR
+        0x27e6,  // left white square bracket
+        0x27e7,  // right white square bracket
+        0x27e8,  // left angle bracket
+        0x27e9,  // right angle bracket
+      ) ++
+      (0x27f0 to 0x27ff) ++  // Supplemental Arrows-A
+      (0x2900 to 0x297f) ++  // Supplemental Arrows-B
+      (0x2980 to 0x29ff) ++  // Miscellaneous Mathematical Symbols-B
+      (0x2a00 to 0x2aff) ++  // Supplemental Mathematical Operators
+      Seq(0x2b1a) ++  // VERBATIM
+      (0x1d400 to 0x1d7ff) ++  // Mathematical Alphanumeric Symbols
+      Seq(
+        0x1f310,  // globe with meridians
+        0x1f4d3,  // notebook
+        0x1f5c0,  // folder
+        0x1f5cf,  // page
+      )
+  }
+
+
+  /* font families */
+
+  sealed case class Family(plain: String, bold: String, italic: String, bold_italic: String)
+
+  object Family
+  {
+    val deja_vu_sans_mono =
+      Family(
+        "DejaVuSansMono",
+        "DejaVuSansMono-Bold",
+        "DejaVuSansMono-Oblique",
+        "DejaVuSansMono-BoldOblique")
+
+    val deja_vu_sans =
+      Family(
+        "DejaVuSans",
+        "DejaVuSans-Bold",
+        "DejaVuSans-Oblique",
+        "DejaVuSans-BoldOblique")
+
+    val deja_vu_serif =
+      Family(
+        "DejaVuSerif",
+        "DejaVuSerif-Bold",
+        "DejaVuSerif-Italic",
+        "DejaVuSerif-BoldItalic")
+  }
+}
--- a/src/Pure/build-jars	Thu Nov 22 20:23:47 2018 +0100
+++ b/src/Pure/build-jars	Thu Nov 22 23:11:12 2018 +0100
@@ -147,6 +147,7 @@
   Tools/dump.scala
   Tools/fontforge.scala
   Tools/imports.scala
+  Tools/isabelle_fonts.scala
   Tools/main.scala
   Tools/mkroot.scala
   Tools/print_operation.scala