From 27e6b163d1ad7da1205a5abc53124741cf7f66f4 Mon Sep 17 00:00:00 2001 From: Lanius Trolling Date: Sat, 3 Feb 2024 14:24:16 -0500 Subject: [PATCH] Add Mechyrdia Sans font sample --- .../kotlin/info/mechyrdia/Factbooks.kt | 26 +- .../info/mechyrdia/data/views_comment.kt | 4 +- .../kotlin/info/mechyrdia/lore/fonts.kt | 265 ++++++++++++++++++ .../kotlin/info/mechyrdia/lore/languages.kt | 131 --------- .../kotlin/info/mechyrdia/lore/parser_tags.kt | 21 +- .../fonts/mechyrdia-sans-bold-italic.ttf | Bin 0 -> 52520 bytes .../resources/fonts/mechyrdia-sans-bold.ttf | Bin 0 -> 49028 bytes .../resources/fonts/mechyrdia-sans-italic.ttf | Bin 0 -> 54512 bytes .../resources/fonts/mechyrdia-sans.ttf | Bin 0 -> 50644 bytes src/jvmMain/resources/static/init.js | 46 +++ 10 files changed, 355 insertions(+), 138 deletions(-) create mode 100644 src/jvmMain/kotlin/info/mechyrdia/lore/fonts.kt delete mode 100644 src/jvmMain/kotlin/info/mechyrdia/lore/languages.kt create mode 100644 src/jvmMain/resources/fonts/mechyrdia-sans-bold-italic.ttf create mode 100644 src/jvmMain/resources/fonts/mechyrdia-sans-bold.ttf create mode 100644 src/jvmMain/resources/fonts/mechyrdia-sans-italic.ttf create mode 100644 src/jvmMain/resources/fonts/mechyrdia-sans.ttf diff --git a/src/jvmMain/kotlin/info/mechyrdia/Factbooks.kt b/src/jvmMain/kotlin/info/mechyrdia/Factbooks.kt index 36316cd..6974f15 100644 --- a/src/jvmMain/kotlin/info/mechyrdia/Factbooks.kt +++ b/src/jvmMain/kotlin/info/mechyrdia/Factbooks.kt @@ -25,6 +25,9 @@ import io.ktor.server.routing.* import io.ktor.server.sessions.* import io.ktor.server.sessions.serialization.* import io.ktor.util.* +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.runInterruptible +import kotlinx.coroutines.withContext import org.slf4j.event.Level import java.io.File import java.io.IOException @@ -260,12 +263,31 @@ fun Application.factbooks() { // Utilities + post("/mechyrdia-sans") { + val queryString = call.request.queryParameters + + val isBold = "true".equals(queryString["bold"], ignoreCase = true) + val isItalic = "true".equals(queryString["italic"], ignoreCase = true) + + val alignArg = queryString["align"] + val align = MechyrdiaSansFont.Alignment.entries.singleOrNull { + it.name.equals(alignArg, ignoreCase = true) + } ?: MechyrdiaSansFont.Alignment.LEFT + + val text = call.receiveText() + val svg = runInterruptible(Dispatchers.Default) { + MechyrdiaSansFont.renderTextToSvg(text, isBold, isItalic, align) + } + + call.respondText(svg, ContentType.Image.SVG) + } + post("/tylan-lang") { - call.respondText(TylanAlphabet.tylanToFontAlphabet(call.receiveText())) + call.respondText(TylanAlphabetFont.tylanToFontAlphabet(call.receiveText())) } post("/pokhwal-lang") { - call.respondText(PokhwalishAlphabet.pokhwalToFontAlphabet(call.receiveText())) + call.respondText(PokhwalishAlphabetFont.pokhwalToFontAlphabet(call.receiveText())) } post("/preview-comment") { diff --git a/src/jvmMain/kotlin/info/mechyrdia/data/views_comment.kt b/src/jvmMain/kotlin/info/mechyrdia/data/views_comment.kt index 3f8ad93..7bf7da9 100644 --- a/src/jvmMain/kotlin/info/mechyrdia/data/views_comment.kt +++ b/src/jvmMain/kotlin/info/mechyrdia/data/views_comment.kt @@ -500,7 +500,7 @@ suspend fun ApplicationCall.commentHelpPage(): HTML.() -> Unit = page("Commentin td { +"Writes text in the Tylan alphabet: " span(classes = "lang-tylan") { - +TylanAlphabet.tylanToFontAlphabet("rheagda tulasra") + +TylanAlphabetFont.tylanToFontAlphabet("rheagda tulasra") } } } @@ -518,7 +518,7 @@ suspend fun ApplicationCall.commentHelpPage(): HTML.() -> Unit = page("Commentin td { +"Writes text in the Pokhwalish alphabet: " span(classes = "lang-pokhwal") { - +PokhwalishAlphabet.pokhwalToFontAlphabet("pokhvalsqo jargo") + +PokhwalishAlphabetFont.pokhwalToFontAlphabet("pokhvalsqo jargo") } } } diff --git a/src/jvmMain/kotlin/info/mechyrdia/lore/fonts.kt b/src/jvmMain/kotlin/info/mechyrdia/lore/fonts.kt new file mode 100644 index 0000000..12e4d0c --- /dev/null +++ b/src/jvmMain/kotlin/info/mechyrdia/lore/fonts.kt @@ -0,0 +1,265 @@ +package info.mechyrdia.lore + +import java.awt.Font +import java.awt.RenderingHints +import java.awt.Shape +import java.awt.geom.AffineTransform +import java.awt.geom.GeneralPath +import java.awt.geom.PathIterator +import java.awt.image.BufferedImage + +object MechyrdiaSansFont { + enum class Alignment(val amount: Double) { + LEFT(0.0), CENTER(0.5), RIGHT(1.0), + } + + fun renderTextToSvg(text: String, bold: Boolean, italic: Boolean, align: Alignment, standalone: Boolean = true): String { + val font = if (bold) { + if (italic) + mechyrdiaSansBI + else + mechyrdiaSansB + } else + if (italic) + mechyrdiaSansI + else + mechyrdiaSans + + val shape = layoutText(text, font, align.amount) + return shape.toSvgDocument(standalone) + } + + private const val DEFAULT_FONT_SIZE = 48f + + private fun loadFont(font: String): Font { + return Font + .createFont(Font.TRUETYPE_FONT, javaClass.getResourceAsStream("/fonts/$font.ttf")!!) + .deriveFont(DEFAULT_FONT_SIZE) + } + + private val mechyrdiaSans = loadFont("mechyrdia-sans") + private val mechyrdiaSansB = loadFont("mechyrdia-sans-bold") + private val mechyrdiaSansI = loadFont("mechyrdia-sans-italic") + private val mechyrdiaSansBI = loadFont("mechyrdia-sans-bold-italic") + + private fun layoutText(text: String, font: Font, alignAmount: Double): Shape { + val img = BufferedImage(256, 160, BufferedImage.TYPE_INT_ARGB) + val g2d = img.createGraphics() + try { + g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON) + + val fontMetrics = g2d.getFontMetrics(font) + val lines = text.split("\r\n", "\n", "\r") + val width = lines.maxOf { fontMetrics.stringWidth(it) }.toDouble() + var y = 0.0 + + val shape = GeneralPath() + val tf = AffineTransform() + for (line in lines) { + if (line.isNotBlank()) { + val x = (width - fontMetrics.stringWidth(line)) * alignAmount + + val glyphs = font.layoutGlyphVector(g2d.fontRenderContext, line.toCharArray(), 0, line.length, Font.LAYOUT_LEFT_TO_RIGHT) + val textShape = glyphs.outline as GeneralPath + + tf.setToIdentity() + tf.translate(x, y) + shape.append(textShape.getPathIterator(tf), false) + } + + y += fontMetrics.height + } + + return shape + } finally { + g2d.dispose() + } + } + + private fun Shape.toSvgDocument(standalone: Boolean = true): String { + return buildString { + if (standalone) + appendLine("") + + val viewBox = bounds2D + appendLine("") + appendLine(toSvgPath()) + appendLine("") + } + } + + private fun Shape.toSvgPath(): String { + return buildString { + append(" { + append("M ${coords[0]},${coords[1]} ") + } + + PathIterator.SEG_LINETO -> { + append("L ${coords[0]},${coords[1]} ") + } + + PathIterator.SEG_QUADTO -> { + append("Q ${coords[0]},${coords[1]} ${coords[2]},${coords[3]} ") + } + + PathIterator.SEG_CUBICTO -> { + append("C ${coords[0]},${coords[1]} ${coords[2]},${coords[3]} ${coords[4]},${coords[5]} ") + } + + PathIterator.SEG_CLOSE -> { + append("Z ") + } + + else -> error("Invalid segment type $segment") + } + + iterator.next() + } + + append("\" fill-rule=\"") + when (val winding = iterator.windingRule) { + PathIterator.WIND_EVEN_ODD -> append("evenodd") + PathIterator.WIND_NON_ZERO -> append("nonzero") + else -> error("Invalid winding rule $winding") + } + + append("\" />") + } + } +} + +object TylanAlphabetFont { + private val allowedTranslitCharacters = setOf( + ' ', '\r', '\n', '\t', + 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'v', 'x', 'y', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + '~', '`', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '=', '+', + '[', '{', '}', ']', '\\', '|', '/', '<', + '.', ',', ':', ';', '\'', '"', '?', '>', + ) + + private val replacements = listOf( + Regex("([0-9xy]+)(?![\\s0-9xy])") to "$1 ", + Regex("(? + partial.replace(regex, replacement) + } +} + +object PokhwalishAlphabetFont { + private val allowedTranslitCharacters = setOf( + ' ', '\r', '\n', '\t', + 'a', 'b', 'c', 'd', 'e', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'y', 'z', + '.', ',', '\'', '?', '!', + ) + + private val replacements = listOf( + // Vowels + Regex("aa") to "A", + Regex("ae") to "A", + Regex("ee") to "E", + Regex("ei") to "E", + Regex("ey") to "E", + Regex("ie") to "I", + Regex("ii") to "I", + Regex("iy") to "I", + Regex("ao") to "O", + Regex("au") to "O", + Regex("oo") to "O", + Regex("ou") to "U", + Regex("ue") to "U", + Regex("ui") to "U", + Regex("uu") to "U", + // Consonants + Regex("tz") to "C", + Regex("hh") to "K", + Regex("kh") to "K", + Regex("gh") to "G", + Regex("ng(?![aeiouAEIOU])") to "N", + Regex("ng([aeiouAEIOU])") to "Ng$1", + Regex("n'g") to "ng", + Regex("qh") to "Q", + Regex("th") to "T", + + Regex("ck") to "q", + Regex("c") to "", + Regex("k") to "q", + ) + + fun pokhwalToFontAlphabet(pokhwal: String) = replacements.fold(pokhwal.lowercase().filter { it in allowedTranslitCharacters }) { partial, (regex, replacement) -> + partial.replace(regex, replacement) + } +} diff --git a/src/jvmMain/kotlin/info/mechyrdia/lore/languages.kt b/src/jvmMain/kotlin/info/mechyrdia/lore/languages.kt deleted file mode 100644 index 362eccf..0000000 --- a/src/jvmMain/kotlin/info/mechyrdia/lore/languages.kt +++ /dev/null @@ -1,131 +0,0 @@ -package info.mechyrdia.lore - -object TylanAlphabet { - private val allowedTranslitCharacters = setOf( - ' ', '\r', '\n', '\t', - 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'v', 'x', 'y', - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', - '~', '`', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '-', '_', '=', '+', - '[', '{', '}', ']', '\\', '|', '/', '<', - '.', ',', ':', ';', '\'', '"', '?', '>', - ) - - private val replacements = listOf( - Regex("([0-9xy]+)(?![\\s0-9xy])") to "$1 ", - Regex("(? - partial.replace(regex, replacement) - } -} - -object PokhwalishAlphabet { - private val allowedTranslitCharacters = setOf( - ' ', '\r', '\n', '\t', - 'a', 'b', 'c', 'd', 'e', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'y', 'z', - '.', ',', '\'', '?', '!', - ) - - private val replacements = listOf( - // Vowels - Regex("aa") to "A", - Regex("ae") to "A", - Regex("ee") to "E", - Regex("ei") to "E", - Regex("ey") to "E", - Regex("ie") to "I", - Regex("ii") to "I", - Regex("iy") to "I", - Regex("ao") to "O", - Regex("au") to "O", - Regex("oo") to "O", - Regex("ou") to "U", - Regex("ue") to "U", - Regex("ui") to "U", - Regex("uu") to "U", - // Consonants - Regex("tz") to "C", - Regex("hh") to "K", - Regex("kh") to "K", - Regex("gh") to "G", - Regex("ng(?![aeiouAEIOU])") to "N", - Regex("ng([aeiouAEIOU])") to "Ng$1", - Regex("n'g") to "ng", - Regex("qh") to "Q", - Regex("th") to "T", - - Regex("ck") to "q", - Regex("c") to "", - Regex("k") to "q", - ) - - fun pokhwalToFontAlphabet(pokhwal: String) = replacements.fold(pokhwal.lowercase().filter { it in allowedTranslitCharacters }) { partial, (regex, replacement) -> - partial.replace(regex, replacement) - } -} diff --git a/src/jvmMain/kotlin/info/mechyrdia/lore/parser_tags.kt b/src/jvmMain/kotlin/info/mechyrdia/lore/parser_tags.kt index 0ff8cff..f1dc72c 100644 --- a/src/jvmMain/kotlin/info/mechyrdia/lore/parser_tags.kt +++ b/src/jvmMain/kotlin/info/mechyrdia/lore/parser_tags.kt @@ -322,7 +322,7 @@ enum class TextParserFormattingTag(val type: TextParserTagType) { TextParserTagType.Indirect { tagParam, content, _ -> if (tagParam?.equals("tylan", ignoreCase = true) == true) { val uncensored = TextParserState.uncensorText(content) - val tylan = TylanAlphabet.tylanToFontAlphabet(uncensored) + val tylan = TylanAlphabetFont.tylanToFontAlphabet(uncensored) val recensored = TextParserState.censorText(tylan) "$recensored" } else if (tagParam?.equals("thedish", ignoreCase = true) == true) @@ -331,7 +331,7 @@ enum class TextParserFormattingTag(val type: TextParserTagType) { "$content" else if (tagParam?.equals("pokhval", ignoreCase = true) == true || tagParam?.equals("pokhwal", ignoreCase = true) == true) { val uncensored = TextParserState.uncensorText(content) - val pokhwal = PokhwalishAlphabet.pokhwalToFontAlphabet(uncensored) + val pokhwal = PokhwalishAlphabetFont.pokhwalToFontAlphabet(uncensored) val recensored = TextParserState.censorText(pokhwal) "$recensored" } else content @@ -339,7 +339,22 @@ enum class TextParserFormattingTag(val type: TextParserTagType) { ), ALPHABET( TextParserTagType.Indirect { _, content, _ -> - if (content.equals("tylan", ignoreCase = true)) { + if (content.equals("mechyrdian", ignoreCase = true)) { + """ + |
+ |

Input Text:

+ | + |

Font options:

+ |
    + |
  • + |
  • + |
  • + |
+ |

Rendered in Mechyrdia Sans:

+ | + |
+ """.trimMargin() + } else if (content.equals("tylan", ignoreCase = true)) { """ |
|

Latin Alphabet:

diff --git a/src/jvmMain/resources/fonts/mechyrdia-sans-bold-italic.ttf b/src/jvmMain/resources/fonts/mechyrdia-sans-bold-italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f1be7733dbc48481af957473c17b3becc7ad8a9c GIT binary patch literal 52520 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 B-nsw) literal 0 HcmV?d00001 diff --git a/src/jvmMain/resources/fonts/mechyrdia-sans-bold.ttf b/src/jvmMain/resources/fonts/mechyrdia-sans-bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5155f6966562117becd5d64693377027cd9893d3 GIT binary patch literal 49028 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 literal 0 HcmV?d00001 diff --git a/src/jvmMain/resources/fonts/mechyrdia-sans.ttf b/src/jvmMain/resources/fonts/mechyrdia-sans.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9bdb85ce1a4e4808d19d98bc04fd519e622a997e GIT binary patch literal 50644 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 JT*~>G{|k}oW#0e* literal 0 HcmV?d00001 diff --git a/src/jvmMain/resources/static/init.js b/src/jvmMain/resources/static/init.js index 2efe1d9..b444c93 100644 --- a/src/jvmMain/resources/static/init.js +++ b/src/jvmMain/resources/static/init.js @@ -17,6 +17,52 @@ }); } + window.addEventListener("load", function () { + // Mechyrdian font + async function mechyrdianToFont(input, boldOpt, italicOpt, alignOpt, output) { + const inText = input.value; + + await delay(1500); + if (inText !== input.value) return; + + let queryString = "?"; + queryString += boldOpt.checked ? "bold=true&" : ""; + queryString += italicOpt.checked ? "italic=true&" : ""; + queryString += "align=" + alignOpt.value; + + const outBlob = await (await fetch('/mechyrdia-sans' + queryString, { + method: 'POST', + headers: { + 'Content-Type': 'text/plain', + }, + body: inText, + })).blob(); + + if (inText !== input.value) return; + + const prevObjectUrl = output.src; + if (prevObjectUrl != null && prevObjectUrl.length > 0) + URL.revokeObjectURL(prevObjectUrl); + + output.src = URL.createObjectURL(outBlob); + } + + const mechyrdiaSansBoxes = document.getElementsByClassName("mechyrdia-sans-box"); + for (const mechyrdiaSansBox of mechyrdiaSansBoxes) { + const inputBox = mechyrdiaSansBox.getElementsByClassName("input-box")[0]; + const boldOpt = mechyrdiaSansBox.getElementsByClassName("bold-option")[0]; + const italicOpt = mechyrdiaSansBox.getElementsByClassName("ital-option")[0]; + const alignOpt = mechyrdiaSansBox.getElementsByClassName("align-opts")[0]; + const outputBox = mechyrdiaSansBox.getElementsByClassName("output-img")[0]; + + const inputListener = () => mechyrdianToFont(inputBox, boldOpt, italicOpt, alignOpt, outputBox); + boldOpt.addEventListener("change", inputListener); + italicOpt.addEventListener("change", inputListener); + alignOpt.addEventListener("change", inputListener); + inputBox.addEventListener("input", inputListener); + } + }); + window.addEventListener("load", function () { // Tylan alphabet async function tylanToFont(input, output) { -- 2.25.1