mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-09 18:14:06 +09:00
new greek and more tweaks
Former-commit-id: 0c480dd7ce173a37f2f48b5b5d711c2641cbda00 Former-commit-id: 18492d01862bdeecb9c0eba825a3b25da76211b0
This commit is contained in:
@@ -112,9 +112,6 @@ open class GameFontBase : Font {
|
|||||||
private fun greekIndexX(c: Char) = (c.toInt() - 0x370) % 16
|
private fun greekIndexX(c: Char) = (c.toInt() - 0x370) % 16
|
||||||
private fun greekIndexY(c: Char) = (c.toInt() - 0x370) / 16
|
private fun greekIndexY(c: Char) = (c.toInt() - 0x370) / 16
|
||||||
|
|
||||||
private fun greekEFIndexX(c: Char) = greekEFList.indexOf(c) % 16
|
|
||||||
private fun greekEFIndexY(c: Char) = greekEFList.indexOf(c) / 16
|
|
||||||
|
|
||||||
private fun romanianIndexX(c: Char) = c.toInt() - 0x218
|
private fun romanianIndexX(c: Char) = c.toInt() - 0x218
|
||||||
private fun romanianIndexY(c: Char) = 0
|
private fun romanianIndexY(c: Char) = 0
|
||||||
|
|
||||||
@@ -128,7 +125,6 @@ open class GameFontBase : Font {
|
|||||||
private fun keycapIndexY(c: Char) = (c.toInt() - 0xE000) / 16
|
private fun keycapIndexY(c: Char) = (c.toInt() - 0xE000) / 16
|
||||||
|
|
||||||
private val narrowWidthSheets = arrayOf(
|
private val narrowWidthSheets = arrayOf(
|
||||||
SHEET_GREEK_EF,
|
|
||||||
SHEET_EXTB_ROMANIAN_EF
|
SHEET_EXTB_ROMANIAN_EF
|
||||||
)
|
)
|
||||||
private val unihanWidthSheets = arrayOf(
|
private val unihanWidthSheets = arrayOf(
|
||||||
@@ -140,6 +136,12 @@ open class GameFontBase : Font {
|
|||||||
private val zeroWidthSheets = arrayOf(
|
private val zeroWidthSheets = arrayOf(
|
||||||
SHEET_COLOURCODE
|
SHEET_COLOURCODE
|
||||||
)
|
)
|
||||||
|
private val variableWidthSheets = arrayOf(
|
||||||
|
SHEET_ASCII_VARW,
|
||||||
|
SHEET_CYRILIC_VARW,
|
||||||
|
SHEET_EXTA_VARW,
|
||||||
|
SHEET_GREEK_VARW
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
override fun getWidth(s: String) = getWidthSubstr(s, s.length)
|
override fun getWidth(s: String) = getWidthSubstr(s, s.length)
|
||||||
@@ -150,14 +152,17 @@ open class GameFontBase : Font {
|
|||||||
val chr = s[i]
|
val chr = s[i]
|
||||||
val ctype = getSheetType(s[i])
|
val ctype = getSheetType(s[i])
|
||||||
|
|
||||||
if (chr.toInt() == 0x21B) // HAX!
|
if (chr.toInt() == 0x21B) // Romanian t; HAX!
|
||||||
len += 6
|
len += 6
|
||||||
else if (
|
else if (variableWidthSheets.contains(ctype)) {
|
||||||
ctype == SHEET_ASCII_VARW ||
|
try {
|
||||||
ctype == SHEET_EXTA_VARW ||
|
len += asciiWidths[chr.toInt()]!!
|
||||||
ctype == SHEET_CYRILIC_VARW
|
}
|
||||||
)
|
catch (e: kotlin.KotlinNullPointerException) {
|
||||||
len += asciiWidths[chr.toInt()]!!
|
println("KotlinNullPointerException on glyph number ${Integer.toHexString(chr.toInt()).toUpperCase()}")
|
||||||
|
System.exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (zeroWidthSheets.contains(ctype))
|
else if (zeroWidthSheets.contains(ctype))
|
||||||
len += 0
|
len += 0
|
||||||
else if (narrowWidthSheets.contains(ctype))
|
else if (narrowWidthSheets.contains(ctype))
|
||||||
@@ -271,12 +276,6 @@ open class GameFontBase : Font {
|
|||||||
|
|
||||||
if (isWenQuanYi1(ch)) {
|
if (isWenQuanYi1(ch)) {
|
||||||
val glyphW = getWidth("" + ch)
|
val glyphW = getWidth("" + ch)
|
||||||
/*wenQuanYi_1.renderInUse(
|
|
||||||
Math.round(x + getWidthSubstr(s, i + 1) - glyphW),
|
|
||||||
Math.round((H - H_UNIHAN) / 2 + y),
|
|
||||||
wenQuanYiIndexX(ch),
|
|
||||||
wenQuanYi1IndexY(ch)
|
|
||||||
)*/
|
|
||||||
wenQuanYi_1.getSubImage(wenQuanYiIndexX(ch), wenQuanYi1IndexY(ch)).drawWithShadow(
|
wenQuanYi_1.getSubImage(wenQuanYiIndexX(ch), wenQuanYi1IndexY(ch)).drawWithShadow(
|
||||||
Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(),
|
Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(),
|
||||||
Math.round((H - H_UNIHAN) / 2 + y).toFloat(),
|
Math.round((H - H_UNIHAN) / 2 + y).toFloat(),
|
||||||
@@ -299,12 +298,6 @@ open class GameFontBase : Font {
|
|||||||
|
|
||||||
if (isWenQuanYi2(ch)) {
|
if (isWenQuanYi2(ch)) {
|
||||||
val glyphW = getWidth("" + ch)
|
val glyphW = getWidth("" + ch)
|
||||||
/*wenQuanYi_2.renderInUse(
|
|
||||||
Math.round(x + getWidthSubstr(s, i + 1) - glyphW),
|
|
||||||
Math.round((H - H_UNIHAN) / 2 + y),
|
|
||||||
wenQuanYiIndexX(ch),
|
|
||||||
wenQuanYi2IndexY(ch)
|
|
||||||
)*/
|
|
||||||
wenQuanYi_2.getSubImage(wenQuanYiIndexX(ch), wenQuanYi2IndexY(ch)).drawWithShadow(
|
wenQuanYi_2.getSubImage(wenQuanYiIndexX(ch), wenQuanYi2IndexY(ch)).drawWithShadow(
|
||||||
Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(),
|
Math.round(x + getWidthSubstr(s, i + 1) - glyphW).toFloat(),
|
||||||
Math.round((H - H_UNIHAN) / 2 + y).toFloat(),
|
Math.round((H - H_UNIHAN) / 2 + y).toFloat(),
|
||||||
@@ -365,14 +358,10 @@ open class GameFontBase : Font {
|
|||||||
sheetX = uniPunctIndexX(ch)
|
sheetX = uniPunctIndexX(ch)
|
||||||
sheetY = uniPunctIndexY(ch)
|
sheetY = uniPunctIndexY(ch)
|
||||||
}
|
}
|
||||||
SHEET_GREEK_EM -> {
|
SHEET_GREEK_VARW -> {
|
||||||
sheetX = greekIndexX(ch)
|
sheetX = greekIndexX(ch)
|
||||||
sheetY = greekIndexY(ch)
|
sheetY = greekIndexY(ch)
|
||||||
}
|
}
|
||||||
SHEET_GREEK_EF -> {
|
|
||||||
sheetX = greekEFIndexX(ch)
|
|
||||||
sheetY = greekEFIndexY(ch)
|
|
||||||
}
|
|
||||||
SHEET_EXTB_ROMANIAN_EM -> {
|
SHEET_EXTB_ROMANIAN_EM -> {
|
||||||
sheetX = romanianIndexX(ch)
|
sheetX = romanianIndexX(ch)
|
||||||
sheetY = romanianIndexY(ch)
|
sheetY = romanianIndexY(ch)
|
||||||
@@ -428,9 +417,7 @@ open class GameFontBase : Font {
|
|||||||
|
|
||||||
private fun getSheetType(c: Char): Int {
|
private fun getSheetType(c: Char): Int {
|
||||||
// EFs
|
// EFs
|
||||||
if (isGreekEF(c))
|
if (isRomanianEF(c))
|
||||||
return SHEET_GREEK_EF
|
|
||||||
else if (isRomanianEF(c))
|
|
||||||
return SHEET_EXTB_ROMANIAN_EF
|
return SHEET_EXTB_ROMANIAN_EF
|
||||||
else if (isThaiEF(c))
|
else if (isThaiEF(c))
|
||||||
return SHEET_EXTA_VARW // will use fourth glyph in EXTA_EF
|
return SHEET_EXTA_VARW // will use fourth glyph in EXTA_EF
|
||||||
@@ -455,7 +442,7 @@ open class GameFontBase : Font {
|
|||||||
else if (isFullwidthUni(c))
|
else if (isFullwidthUni(c))
|
||||||
return SHEET_FW_UNI
|
return SHEET_FW_UNI
|
||||||
else if (isGreek(c))
|
else if (isGreek(c))
|
||||||
return SHEET_GREEK_EM
|
return SHEET_GREEK_VARW
|
||||||
else if (isRomanian(c))
|
else if (isRomanian(c))
|
||||||
return SHEET_EXTB_ROMANIAN_EM
|
return SHEET_EXTB_ROMANIAN_EM
|
||||||
else if (isThai(c))
|
else if (isThai(c))
|
||||||
@@ -504,19 +491,16 @@ open class GameFontBase : Font {
|
|||||||
|
|
||||||
fun Char.isColourCode() = colourKey.containsKey(this)
|
fun Char.isColourCode() = colourKey.containsKey(this)
|
||||||
|
|
||||||
/**
|
fun buildWidthTable(sheet: SpriteSheet, codeOffset: Int, codeRange: IntRange, rows: Int = 16) {
|
||||||
* Assumes spritesheet to has 16x16 cells
|
|
||||||
*/
|
|
||||||
fun buildAsciiWidthTable() {
|
|
||||||
val binaryCodeOffset = 15
|
val binaryCodeOffset = 15
|
||||||
|
|
||||||
val cellW = asciiSheet.getSubImage(0, 0).width + 1 // should be 16
|
val cellW = sheet.getSubImage(0, 0).width + 1 // should be 16
|
||||||
val cellH = asciiSheet.getSubImage(0, 0).height + 1 // should be 20
|
val cellH = sheet.getSubImage(0, 0).height + 1 // should be 20
|
||||||
|
|
||||||
// control chars
|
// control chars
|
||||||
for (ccode in 0..255) {
|
for (ccode in codeRange) {
|
||||||
val glyphX = ccode % 16
|
val glyphX = ccode % rows
|
||||||
val glyphY = ccode / 16
|
val glyphY = ccode / rows
|
||||||
|
|
||||||
val codeStartX = (glyphX * cellW) + binaryCodeOffset
|
val codeStartX = (glyphX * cellW) + binaryCodeOffset
|
||||||
val codeStartY = (glyphY * cellH)
|
val codeStartY = (glyphY * cellH)
|
||||||
@@ -524,64 +508,12 @@ open class GameFontBase : Font {
|
|||||||
var glyphWidth = 0
|
var glyphWidth = 0
|
||||||
for (downCtr in 0..3) {
|
for (downCtr in 0..3) {
|
||||||
// if alpha is not zero, assume it's 1
|
// if alpha is not zero, assume it's 1
|
||||||
if (asciiSheet.texture.getPixel(codeStartX, codeStartY + downCtr)[3] == 255) {
|
if (sheet.texture.getPixel(codeStartX, codeStartY + downCtr)[3] == 255) {
|
||||||
glyphWidth = glyphWidth or (1 shl downCtr)
|
glyphWidth = glyphWidth or (1 shl downCtr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
asciiWidths[ccode] = glyphWidth
|
asciiWidths[codeOffset + ccode] = glyphWidth
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun buildLatinExtAWidthTable() {
|
|
||||||
val binaryCodeOffset = 15
|
|
||||||
|
|
||||||
val cellW = extASheet.getSubImage(0, 0).width + 1 // should be 16
|
|
||||||
val cellH = extASheet.getSubImage(0, 0).height + 1 // should be 20
|
|
||||||
|
|
||||||
// control chars
|
|
||||||
for (ccode in 0..127) {
|
|
||||||
val glyphX = ccode % 16
|
|
||||||
val glyphY = ccode / 16
|
|
||||||
|
|
||||||
val codeStartX = (glyphX * cellW) + binaryCodeOffset
|
|
||||||
val codeStartY = (glyphY * cellH)
|
|
||||||
|
|
||||||
var glyphWidth = 0
|
|
||||||
for (downCtr in 0..3) {
|
|
||||||
// if alpha is not zero, assume it's 1
|
|
||||||
if (extASheet.texture.getPixel(codeStartX, codeStartY + downCtr)[3] == 255) {
|
|
||||||
glyphWidth = glyphWidth or (1 shl downCtr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
asciiWidths[0x100 + ccode] = glyphWidth
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun buildCyrillicWidthTable() {
|
|
||||||
val binaryCodeOffset = 15
|
|
||||||
|
|
||||||
val cellW = cyrilic.getSubImage(0, 0).width + 1 // should be 16
|
|
||||||
val cellH = cyrilic.getSubImage(0, 0).height + 1 // should be 20
|
|
||||||
|
|
||||||
// control chars
|
|
||||||
for (ccode in 0..0x5F) {
|
|
||||||
val glyphX = ccode % 16
|
|
||||||
val glyphY = ccode / 16
|
|
||||||
|
|
||||||
val codeStartX = (glyphX * cellW) + binaryCodeOffset
|
|
||||||
val codeStartY = (glyphY * cellH)
|
|
||||||
|
|
||||||
var glyphWidth = 0
|
|
||||||
for (downCtr in 0..3) {
|
|
||||||
// if alpha is not zero, assume it's 1
|
|
||||||
if (cyrilic.texture.getPixel(codeStartX, codeStartY + downCtr)[3] == 255) {
|
|
||||||
glyphWidth = glyphWidth or (1 shl downCtr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
asciiWidths[0x400 + ccode] = glyphWidth
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -603,7 +535,6 @@ open class GameFontBase : Font {
|
|||||||
lateinit internal var wenQuanYi_1: SpriteSheet
|
lateinit internal var wenQuanYi_1: SpriteSheet
|
||||||
lateinit internal var wenQuanYi_2: SpriteSheet
|
lateinit internal var wenQuanYi_2: SpriteSheet
|
||||||
lateinit internal var greekSheet: SpriteSheet
|
lateinit internal var greekSheet: SpriteSheet
|
||||||
lateinit internal var greekSheetEF: SpriteSheet
|
|
||||||
lateinit internal var romanianSheet: SpriteSheet
|
lateinit internal var romanianSheet: SpriteSheet
|
||||||
lateinit internal var romanianSheetEF: SpriteSheet
|
lateinit internal var romanianSheetEF: SpriteSheet
|
||||||
lateinit internal var thaiSheet: SpriteSheet
|
lateinit internal var thaiSheet: SpriteSheet
|
||||||
@@ -638,13 +569,12 @@ open class GameFontBase : Font {
|
|||||||
internal val SHEET_UNI_PUNCT = 9
|
internal val SHEET_UNI_PUNCT = 9
|
||||||
internal val SHEET_WENQUANYI_1 = 10
|
internal val SHEET_WENQUANYI_1 = 10
|
||||||
internal val SHEET_WENQUANYI_2 = 11
|
internal val SHEET_WENQUANYI_2 = 11
|
||||||
internal val SHEET_GREEK_EM = 12
|
internal val SHEET_GREEK_VARW = 12
|
||||||
internal val SHEET_GREEK_EF = 13
|
internal val SHEET_EXTB_ROMANIAN_EM = 13
|
||||||
internal val SHEET_EXTB_ROMANIAN_EM = 14
|
internal val SHEET_EXTB_ROMANIAN_EF = 14
|
||||||
internal val SHEET_EXTB_ROMANIAN_EF = 15
|
internal val SHEET_THAI_EM = 15
|
||||||
internal val SHEET_THAI_EM = 16
|
internal val SHEET_THAI_EF = 16
|
||||||
internal val SHEET_THAI_EF = 17
|
internal val SHEET_KEYCAP = 17
|
||||||
internal val SHEET_KEYCAP = 18
|
|
||||||
|
|
||||||
internal val SHEET_UNKNOWN = 254
|
internal val SHEET_UNKNOWN = 254
|
||||||
internal val SHEET_COLOURCODE = 255
|
internal val SHEET_COLOURCODE = 255
|
||||||
|
|||||||
@@ -39,9 +39,7 @@ class GameFontWhite : GameFontBase() {
|
|||||||
GameFontBase.wenQuanYi_2 = SpriteSheet(
|
GameFontBase.wenQuanYi_2 = SpriteSheet(
|
||||||
"./assets/graphics/fonts/wenquanyi_11pt_part2.tga", 16, 18, 2)
|
"./assets/graphics/fonts/wenquanyi_11pt_part2.tga", 16, 18, 2)
|
||||||
GameFontBase.greekSheet = SpriteSheet(
|
GameFontBase.greekSheet = SpriteSheet(
|
||||||
"./assets/graphics/fonts/greek_fullwidth.tga", GameFontBase.W_LATIN_WIDE, GameFontBase.H)
|
"./assets/graphics/fonts/greek_variable.tga", 15, 19, 1)
|
||||||
GameFontBase.greekSheetEF = SpriteSheet(
|
|
||||||
"./assets/graphics/fonts/greek_ef.tga", GameFontBase.W_LATIN_NARROW, GameFontBase.H)
|
|
||||||
GameFontBase.romanianSheet = SpriteSheet(
|
GameFontBase.romanianSheet = SpriteSheet(
|
||||||
"./assets/graphics/fonts/romana_fullwidth.tga", GameFontBase.W_LATIN_WIDE, GameFontBase.H)
|
"./assets/graphics/fonts/romana_fullwidth.tga", GameFontBase.W_LATIN_WIDE, GameFontBase.H)
|
||||||
GameFontBase.romanianSheetEF = SpriteSheet(
|
GameFontBase.romanianSheetEF = SpriteSheet(
|
||||||
@@ -65,7 +63,6 @@ class GameFontWhite : GameFontBase() {
|
|||||||
GameFontBase.wenQuanYi_1,
|
GameFontBase.wenQuanYi_1,
|
||||||
GameFontBase.wenQuanYi_2,
|
GameFontBase.wenQuanYi_2,
|
||||||
GameFontBase.greekSheet,
|
GameFontBase.greekSheet,
|
||||||
GameFontBase.greekSheetEF,
|
|
||||||
GameFontBase.romanianSheet,
|
GameFontBase.romanianSheet,
|
||||||
GameFontBase.romanianSheetEF,
|
GameFontBase.romanianSheetEF,
|
||||||
GameFontBase.thaiSheet,
|
GameFontBase.thaiSheet,
|
||||||
@@ -75,8 +72,9 @@ class GameFontWhite : GameFontBase() {
|
|||||||
GameFontBase.sheetKey = shk
|
GameFontBase.sheetKey = shk
|
||||||
|
|
||||||
|
|
||||||
buildAsciiWidthTable()
|
buildWidthTable(asciiSheet, 0, 0..0xFF)
|
||||||
buildLatinExtAWidthTable()
|
buildWidthTable(extASheet, 0x100, 0..0x7F)
|
||||||
buildCyrillicWidthTable()
|
buildWidthTable(cyrilic, 0x400, 0..0x5F)
|
||||||
|
buildWidthTable(greekSheet, 0x370, 0..0x5F)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,14 +72,14 @@ nopqrstuvwxyz
|
|||||||
|
|
||||||
val line = " **** TERRAN BASIC V0.5 **** "
|
val line = " **** TERRAN BASIC V0.5 **** "
|
||||||
|
|
||||||
g.drawString("ABCDEFGHIJKLM", 10f, 10f)
|
g.drawString("ABCDEFGHIJKLMN", 10f, 10f)
|
||||||
g.drawString("NOPQRSTÜVWXYZ", 10f, 30f)
|
g.drawString("OPQRSTÜVWXYZÆŒ", 10f, 30f)
|
||||||
|
|
||||||
g.drawString("abcdefghijklmno", 160f, 10f)
|
g.drawString("abcdefghijklmno", 160f, 10f)
|
||||||
g.drawString("pqrstuvwxyzߌ", 160f, 30f)
|
g.drawString("pqrstuvwxyzßæœ", 160f, 30f)
|
||||||
|
|
||||||
g.drawString("1234567890", 320f, 10f)
|
g.drawString("1234567890", 320f, 10f)
|
||||||
g.drawString("minimum kerning keming Nannu Namu", 320f, 30f)
|
g.drawString("minimum kerning keming Narnu Namu", 320f, 30f)
|
||||||
|
|
||||||
g.drawString("Syö salmiakkia perkele", 480f, 10f)
|
g.drawString("Syö salmiakkia perkele", 480f, 10f)
|
||||||
|
|
||||||
@@ -97,9 +97,9 @@ nopqrstuvwxyz
|
|||||||
"britiske besiddelser, foreløbigt i 1957 og endeligt i 1963.",
|
"britiske besiddelser, foreløbigt i 1957 og endeligt i 1963.",
|
||||||
"",
|
"",
|
||||||
"διαφυλάξτε γενικά τη ζωή σας από βαθειά ψυχικά τραύματα",
|
"διαφυλάξτε γενικά τη ζωή σας από βαθειά ψυχικά τραύματα",
|
||||||
|
"ΔΙΑΦΥΛΆΞΤΕ ΓΕΝΙΚΆ ΤΗ ΖΩΉ ΣΑΣ ΑΠΌ ΒΑΘΕΙΆ ΨΥΧΙΚΆ ΤΡΑΎΜΑΤΑ",
|
||||||
"Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.",
|
"Широкая электрификация южных губерний даст мощный толчок подъёму сельского хозяйства.",
|
||||||
"Příliš žluťoučký kůň úpěl ďábelské ódy. Árvíztűrő tükörfúrógép ",
|
"Příliš žluťoučký kůň úpěl ďábelské ódy. Árvíztűrő tükörfúrógép ",
|
||||||
"Põdur Zagrebi tšellomängija-följetonist Ciqo külmetas kehvas garaažis ",
|
|
||||||
"Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich",
|
"Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich",
|
||||||
"Pijamalı hasta yağız şoföre çabucak güvendi. Kŕdeľ ďatľov učí koňa žrať kôru.",
|
"Pijamalı hasta yağız şoföre çabucak güvendi. Kŕdeľ ďatľov učí koňa žrať kôru.",
|
||||||
"Voix ambiguë d'un cœur qui au zéphyr préfère les jattes de kiwi",
|
"Voix ambiguë d'un cœur qui au zéphyr préfère les jattes de kiwi",
|
||||||
@@ -113,7 +113,7 @@ nopqrstuvwxyz
|
|||||||
"mála sem einkenndust af því að opinberir aðilar virtu ekki stjórnarskrárvarin réttindi einstaklingsins.",
|
"mála sem einkenndust af því að opinberir aðilar virtu ekki stjórnarskrárvarin réttindi einstaklingsins.",
|
||||||
"",
|
"",
|
||||||
"Also supports:",
|
"Also supports:",
|
||||||
"키스의 고유조건은 입술끼리 만나야 하고 특별한 기술은 필요치 않다. 대한민국 머한민국 대구 머구 명작 띵작 유식 윾싀",
|
"키스의 고유조건은 입술끼리 만나야 하고 특별한 기술은 필요치 않다. 대한민국 머한민국 (대구) {머구} 명작 띵작 유식 윾싀",
|
||||||
"とりなくこゑす ゆめさませ みよあけわたる ひんかしを そらいろはえて おきつへに ほふねむれゐぬ もやのうち",
|
"とりなくこゑす ゆめさませ みよあけわたる ひんかしを そらいろはえて おきつへに ほふねむれゐぬ もやのうち",
|
||||||
"鳥啼く声す 夢覚ませ 見よ明け渡る 東を 空色栄えて 沖つ辺に 帆船群れゐぬ 靄の中 (using WenQuanYi)",
|
"鳥啼く声す 夢覚ませ 見よ明け渡る 東を 空色栄えて 沖つ辺に 帆船群れゐぬ 靄の中 (using WenQuanYi)",
|
||||||
""
|
""
|
||||||
|
|||||||
Reference in New Issue
Block a user