mirror of
https://github.com/curioustorvald/Terrarum-sans-bitmap.git
synced 2026-06-06 05:58:30 +09:00
anchor fixes
This commit is contained in:
@@ -77,7 +77,7 @@ Up&Down:
|
|||||||
|
|
||||||
<MSB,Red> SXXXXXXX SYYYYYYY 00000000 <LSB,Blue>
|
<MSB,Red> SXXXXXXX SYYYYYYY 00000000 <LSB,Blue>
|
||||||
|
|
||||||
Each X and Y numbers are Signed 8-Bit Integer.
|
Each X and Y numbers are TWO'S COMPLEMENT Signed 8-Bit Integer.
|
||||||
|
|
||||||
X-positive: nudges towards left
|
X-positive: nudges towards left
|
||||||
Y-positive: nudges towards down
|
Y-positive: nudges towards down
|
||||||
@@ -87,19 +87,22 @@ Y-positive: nudges towards down
|
|||||||
4 Pixels are further divided as follows:
|
4 Pixels are further divided as follows:
|
||||||
|
|
||||||
| LSB | | Red | Green | Blue |
|
| LSB | | Red | Green | Blue |
|
||||||
| ------------ | ------------ | ------------ | ------------ | ------------ |
|
| ------------ | ------------ | ------------ | ----------- | ------------ |
|
||||||
| Y | Anchor point Y for: | undefined | undefined | undefined |
|
| Y | Anchor point Y for: | undefined | undefined | undefined |
|
||||||
| X | Anchor point X for: | undefined | undefined | undefined |
|
| X | Anchor point X for: | undefined | undefined | undefined |
|
||||||
| Y | Anchor point Y for: | (unused) | (unused) | (unused) |
|
| Y | Anchor point Y for: | Type-0 | Type-1 | Type-2 |
|
||||||
| X | Anchor point X for: | Type-0 | Type-1 | Type-2 |
|
| X | Anchor point X for: | Type-0 | Type-1 | Type-2 |
|
||||||
| **MSB** | | | | |
|
| **MSB** | | | | |
|
||||||
|
|
||||||
<MSB,Red> 1Y1Y1Y1Y 1Y2Y2Y2Y 1Y3Y3Y3Y <LSB,Blue>
|
<MSB,Red> 1Y1Y1Y1Y 2Y2Y2Y2Y 3Y3Y3Y3Y <LSB,Blue>
|
||||||
<MSB,Red> 1X1X1X1X 1X2X2X2X 1X3X3X3X <LSB,Blue>
|
<MSB,Red> 1X1X1X1X 2X2X2X2X 3X3X3X3X <LSB,Blue>
|
||||||
|
|
||||||
where Red is first, Green is second, Blue is the third diacritics.
|
where Red is first, Green is second, Blue is the third diacritics.
|
||||||
MSB for each word must be set so that the pixel would appear brighter on the image editor.
|
|
||||||
(the font program will only read low 7 bits for each RGB channel)
|
Each X and Y numbers are SIGN AND MAGNITUDE 8-Bit Integer.
|
||||||
|
|
||||||
|
X-positive: nudges towards left
|
||||||
|
Y-positive: nudges towards down
|
||||||
|
|
||||||
#### Diacritics Type Bit Encoding
|
#### Diacritics Type Bit Encoding
|
||||||
|
|
||||||
|
|||||||
BIN
demo.PNG
BIN
demo.PNG
Binary file not shown.
|
Before Width: | Height: | Size: 177 KiB After Width: | Height: | Size: 177 KiB |
@@ -25,7 +25,7 @@ How multilingual? Real multilingual!
|
|||||||
আমি কাঁচ খেতে পারি, তাতে আমার কোনো ক্ষতি হয় না।
|
আমি কাঁচ খেতে পারি, তাতে আমার কোনো ক্ষতি হয় না।
|
||||||
Под южно дърво, цъфтящо в синьо, бягаше малко пухкаво зайче
|
Под южно дърво, цъфтящо в синьо, бягаше малко пухкаво зайче
|
||||||
ᎠᏍᎦᏯᎡᎦᎢᎾᎨᎢᎣᏍᏓᎤᎩᏍᏗᎥᎴᏓᎯᎲᎢᏔᎵᏕᎦᏟᏗᏖᎸᎳᏗᏗᎧᎵᎢᏘᎴᎩ ᏙᏱᏗᏜᏫᏗᏣᏚᎦᏫᏛᏄᏓᎦᏝᏃᎠᎾᏗᎭᏞᎦᎯᎦᏘᏓᏠᎨᏏᏕᏡᎬᏢᏓᏥᏩᏝᎡᎢᎪᎢ ᎠᎦᏂᏗᎮᎢᎫᎩᎬᏩᎴᎢᎠᏆᏅᏛᎫᏊᎾᎥᎠᏁᏙᎲᏐᏈᎵᎤᎩᎸᏓᏭᎷᏤᎢᏏᏉᏯᏌᏊ ᎤᏂᏋᎢᏡᎬᎢᎰᏩᎬᏤᎵᏍᏗᏱᎩᎱᎱᎤᎩᎴᎢᏦᎢᎠᏂᏧᏣᏨᎦᏥᎪᎥᏌᏊᎤᎶᏒᎢᎢᏡᎬᎢ ᎹᎦᎺᎵᏥᎻᎼᏏᎽᏗᏩᏂᎦᏘᎾᎿᎠᏁᎬᎢᏅᎩᎾᏂᎡᎢᏌᎶᎵᏎᎷᎠᏑᏍᏗᏪᎩ ᎠᎴ ᏬᏗᏲᏭᎾᏓᏍᏓᏴᏁᎢᎤᎦᏅᏮᏰᎵᏳᏂᎨᎢ
|
ᎠᏍᎦᏯᎡᎦᎢᎾᎨᎢᎣᏍᏓᎤᎩᏍᏗᎥᎴᏓᎯᎲᎢᏔᎵᏕᎦᏟᏗᏖᎸᎳᏗᏗᎧᎵᎢᏘᎴᎩ ᏙᏱᏗᏜᏫᏗᏣᏚᎦᏫᏛᏄᏓᎦᏝᏃᎠᎾᏗᎭᏞᎦᎯᎦᏘᏓᏠᎨᏏᏕᏡᎬᏢᏓᏥᏩᏝᎡᎢᎪᎢ ᎠᎦᏂᏗᎮᎢᎫᎩᎬᏩᎴᎢᎠᏆᏅᏛᎫᏊᎾᎥᎠᏁᏙᎲᏐᏈᎵᎤᎩᎸᏓᏭᎷᏤᎢᏏᏉᏯᏌᏊ ᎤᏂᏋᎢᏡᎬᎢᎰᏩᎬᏤᎵᏍᏗᏱᎩᎱᎱᎤᎩᎴᎢᏦᎢᎠᏂᏧᏣᏨᎦᏥᎪᎥᏌᏊᎤᎶᏒᎢᎢᏡᎬᎢ ᎹᎦᎺᎵᏥᎻᎼᏏᎽᏗᏩᏂᎦᏘᎾᎿᎠᏁᎬᎢᏅᎩᎾᏂᎡᎢᏌᎶᎵᏎᎷᎠᏑᏍᏗᏪᎩ ᎠᎴ ᏬᏗᏲᏭᎾᏓᏍᏓᏴᏁᎢᎤᎦᏅᏮᏰᎵᏳᏂᎨᎢ
|
||||||
Ѳеѡфа́нъ и҆ Алеѯі́й, ѕѣлѡ̀ возлюби́вше ѱалти́рь, воспѣ́ша при свѣ́тѣ ѕвѣ́здъ, помазꙋ́юще сщ҃е́нное мѵ́ро; серафими мн̑оꙮчитїи̑, ꙗ҆́кѡ ѻ҆́гнь, ѡ҆крꙋжа́хꙋ прⷭ҇то́лъ Бж҃їй, и҆ всѧ̀ землѧ̀ и҆спо́лнисѧ свѣ́та, ꙗ҆́кѡ ѕмі́й попра́нъ є҆́сть
|
Ѳеѡфа́нъ и҆ Алеѯі́й, ѕѣлѡ̀ возлюби́вше ѱалти́рь, воспѣ́ша при свѣ́тѣ ѕвѣ́здъ, помазꙋ́юще сщ҃е́нное мѵ́ро; серафими мн̑оꙮ҆читїи̑, ꙗ҆́кѡ ѻ҆́гнь, ѡ҆крꙋжа́хꙋ прⷭ҇то́лъ Бж҃їй, и҆ всѧ̀ землѧ̀ и҆спо́лнисѧ свѣ́та, ꙗ҆́кѡ ѕмі́й попра́нъ є҆́сть
|
||||||
Příliš žluťoučký kůň úpěl ďábelské ódy
|
Příliš žluťoučký kůň úpěl ďábelské ódy
|
||||||
Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Walther spillede på xylofon
|
Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen Walther spillede på xylofon
|
||||||
PACK MY BOX WITH FIVE DOZEN LIQUOR JUGS
|
PACK MY BOX WITH FIVE DOZEN LIQUOR JUGS
|
||||||
@@ -105,7 +105,7 @@ How multilingual? Real multilingual!
|
|||||||
|
|
||||||
‣ Full support for Archaic Kana/Hentaigana
|
‣ Full support for Archaic Kana/Hentaigana
|
||||||
|
|
||||||
серафими мн̑оꙮчитїи̑, ꙗ҆́кѡ ѻ҆́гнь, ѡ҆крꙋжа́хꙋ прⷭ҇то́лъ Бж҃їй, и҆ всѧ̀ землѧ̀ и҆спо́лнисѧ свѣ́та
|
серафими мн̑оꙮ҆читїи̑, ꙗ҆́кѡ ѻ҆́гнь, ѡ҆крꙋжа́хꙋ прⷭ҇то́лъ Бж҃їй, и҆ всѧ̀ землѧ̀ и҆спо́лнисѧ свѣ́та
|
||||||
|
|
||||||
‣ Fan of Church Slavonic? We’ve got you!
|
‣ Fan of Church Slavonic? We’ve got you!
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
BIN
src/assets/cyrilic_variable.tga
LFS
BIN
src/assets/cyrilic_variable.tga
LFS
Binary file not shown.
BIN
src/assets/internal_variable.tga
LFS
BIN
src/assets/internal_variable.tga
LFS
Binary file not shown.
@@ -5,7 +5,9 @@ import net.torvald.terrarumsansbitmap.gdx.CodePoint
|
|||||||
/**
|
/**
|
||||||
* Created by minjaesong on 2021-11-25.
|
* Created by minjaesong on 2021-11-25.
|
||||||
*/
|
*/
|
||||||
data class DiacriticsAnchor(val type: Int, val x: Int, val y: Int, val xUsed: Boolean, val yUsed: Boolean)
|
data class DiacriticsAnchor(val type: Int, val x: Int, val y: Int) {
|
||||||
|
val isZero = (x == 0 && y == 0)
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Created by minjaesong on 2018-08-07.
|
* Created by minjaesong on 2018-08-07.
|
||||||
*/
|
*/
|
||||||
@@ -17,7 +19,7 @@ data class GlyphProps(
|
|||||||
val nudgeX: Int = 0,
|
val nudgeX: Int = 0,
|
||||||
val nudgeY: Int = 0,
|
val nudgeY: Int = 0,
|
||||||
|
|
||||||
val diacriticsAnchors: Array<DiacriticsAnchor> = Array(6) { DiacriticsAnchor(it, 0, 0, false, false) },
|
val diacriticsAnchors: Array<DiacriticsAnchor> = Array(6) { DiacriticsAnchor(it, 0, 0) },
|
||||||
|
|
||||||
val alignWhere: Int = 0, // ALIGN_LEFT..ALIGN_BEFORE
|
val alignWhere: Int = 0, // ALIGN_LEFT..ALIGN_BEFORE
|
||||||
|
|
||||||
@@ -99,10 +101,6 @@ data class GlyphProps(
|
|||||||
diacriticsAnchors.forEach {
|
diacriticsAnchors.forEach {
|
||||||
hash = hash xor it.type
|
hash = hash xor it.type
|
||||||
hash = hash * 16777619
|
hash = hash * 16777619
|
||||||
hash = hash xor (it.x or (if (it.xUsed) 128 else 0))
|
|
||||||
hash = hash * 16777619
|
|
||||||
hash = hash xor (it.y or (if (it.yUsed) 128 else 0))
|
|
||||||
hash = hash * 16777619
|
|
||||||
}
|
}
|
||||||
|
|
||||||
hash = hash xor tags
|
hash = hash xor tags
|
||||||
|
|||||||
@@ -947,12 +947,12 @@ class TerrarumSansBitmap(
|
|||||||
val shift = (3 - (it % 3)) * 8
|
val shift = (3 - (it % 3)) * 8
|
||||||
val yPixel = pixmap.getPixel(codeStartX, codeStartY + yPos).tagify()
|
val yPixel = pixmap.getPixel(codeStartX, codeStartY + yPos).tagify()
|
||||||
val xPixel = pixmap.getPixel(codeStartX, codeStartY + yPos + 1).tagify()
|
val xPixel = pixmap.getPixel(codeStartX, codeStartY + yPos + 1).tagify()
|
||||||
val yUsed = (yPixel ushr shift) and 128 != 0
|
val ySgn = ((yPixel ushr shift) and 128).let { if (it == 0) -1 else 1 }
|
||||||
val xUsed = (xPixel ushr shift) and 128 != 0
|
val xSgn = ((xPixel ushr shift) and 128).let { if (it == 0) -1 else 1 }
|
||||||
val y = if (yUsed) (yPixel ushr shift) and 127 else 0
|
val y = ((yPixel ushr shift) and 127) * ySgn
|
||||||
val x = if (xUsed) (xPixel ushr shift) and 127 else 0
|
val x = ((xPixel ushr shift) and 127) * xSgn
|
||||||
|
|
||||||
DiacriticsAnchor(it, x, y, xUsed, yUsed)
|
DiacriticsAnchor(it, x, y)
|
||||||
}.toTypedArray()
|
}.toTypedArray()
|
||||||
|
|
||||||
val alignWhere = (0..1).fold(0) { acc, y -> acc or ((pixmap.getPixel(codeStartX, codeStartY + y + 15).and(255) != 0).toInt() shl y) }
|
val alignWhere = (0..1).fold(0) { acc, y -> acc or ((pixmap.getPixel(codeStartX, codeStartY + y + 15).and(255) != 0).toInt() shl y) }
|
||||||
@@ -1020,17 +1020,6 @@ class TerrarumSansBitmap(
|
|||||||
(0xD800..0xDFFF).forEach { glyphProps[it] = GlyphProps(0) }
|
(0xD800..0xDFFF).forEach { glyphProps[it] = GlyphProps(0) }
|
||||||
(0x100000..0x10FFFF).forEach { glyphProps[it] = GlyphProps(0) }
|
(0x100000..0x10FFFF).forEach { glyphProps[it] = GlyphProps(0) }
|
||||||
(0xFFFA0..0xFFFFF).forEach { glyphProps[it] = GlyphProps(0) }
|
(0xFFFA0..0xFFFFF).forEach { glyphProps[it] = GlyphProps(0) }
|
||||||
|
|
||||||
|
|
||||||
// manually add width of one orphan insular letter
|
|
||||||
// WARNING: glyphs in 0xA770..0xA778 has invalid data, further care is required
|
|
||||||
glyphProps[0x1D79] = GlyphProps(9)
|
|
||||||
|
|
||||||
|
|
||||||
// U+007F is DEL originally, but this font stores bitmap of Replacement Character (U+FFFD)
|
|
||||||
// to this position. String replacer will replace U+FFFD into U+007F.
|
|
||||||
glyphProps[0x7F] = GlyphProps(15)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun Int.halveWidth() = this / 2 + 1
|
private fun Int.halveWidth() = this / 2 + 1
|
||||||
@@ -1224,30 +1213,32 @@ class TerrarumSansBitmap(
|
|||||||
// set X pos according to alignment information
|
// set X pos according to alignment information
|
||||||
posXbuffer[charIndex] = -thisProp.nudgeX +
|
posXbuffer[charIndex] = -thisProp.nudgeX +
|
||||||
when (thisProp.alignWhere) {
|
when (thisProp.alignWhere) {
|
||||||
GlyphProps.ALIGN_LEFT, GlyphProps.ALIGN_BEFORE -> posXbuffer[nonDiacriticCounter]
|
GlyphProps.ALIGN_LEFT, GlyphProps.ALIGN_BEFORE -> {
|
||||||
|
val anchorPointX = if (itsProp.diacriticsAnchors[diacriticsType].isZero) itsProp.width else itsProp.diacriticsAnchors[diacriticsType].x
|
||||||
|
|
||||||
|
posXbuffer[nonDiacriticCounter] + anchorPointX
|
||||||
|
}
|
||||||
GlyphProps.ALIGN_RIGHT -> {
|
GlyphProps.ALIGN_RIGHT -> {
|
||||||
// println("thisprop alignright $kerning, $extraWidth")
|
// println("thisprop alignright $kerning, $extraWidth")
|
||||||
|
|
||||||
val anchorPoint =
|
val anchorPointX = if (itsProp.diacriticsAnchors[diacriticsType].isZero) itsProp.width else itsProp.diacriticsAnchors[diacriticsType].x
|
||||||
if (!itsProp.diacriticsAnchors[diacriticsType].xUsed) itsProp.width else itsProp.diacriticsAnchors[diacriticsType].x
|
|
||||||
|
|
||||||
extraWidth += thisProp.width
|
extraWidth += thisProp.width
|
||||||
posXbuffer[nonDiacriticCounter] + anchorPoint - W_VAR_INIT + kerning + extraWidth
|
posXbuffer[nonDiacriticCounter] + anchorPointX - W_VAR_INIT + kerning + extraWidth
|
||||||
}
|
}
|
||||||
GlyphProps.ALIGN_CENTRE -> {
|
GlyphProps.ALIGN_CENTRE -> {
|
||||||
val anchorPoint =
|
val anchorPointX = if (itsProp.diacriticsAnchors[diacriticsType].isZero) itsProp.width.div(2) else itsProp.diacriticsAnchors[diacriticsType].x
|
||||||
if (!itsProp.diacriticsAnchors[diacriticsType].xUsed) itsProp.width.div(2) else itsProp.diacriticsAnchors[diacriticsType].x
|
|
||||||
|
|
||||||
if (itsProp.alignWhere == GlyphProps.ALIGN_RIGHT) {
|
if (itsProp.alignWhere == GlyphProps.ALIGN_RIGHT) {
|
||||||
if (thisChar in 0x900..0x902)
|
if (thisChar in 0x900..0x902)
|
||||||
posXbuffer[nonDiacriticCounter] + anchorPoint + (itsProp.width - 1).div(2)
|
posXbuffer[nonDiacriticCounter] + anchorPointX + (itsProp.width - 1).div(2)
|
||||||
else
|
else
|
||||||
posXbuffer[nonDiacriticCounter] + anchorPoint + (itsProp.width + 1).div(2)
|
posXbuffer[nonDiacriticCounter] + anchorPointX + (itsProp.width + 1).div(2)
|
||||||
} else {
|
} else {
|
||||||
if (thisChar in 0x900..0x902)
|
if (thisChar in 0x900..0x902)
|
||||||
posXbuffer[nonDiacriticCounter] + anchorPoint - (W_VAR_INIT + 1) / 2
|
posXbuffer[nonDiacriticCounter] + anchorPointX - (W_VAR_INIT + 1) / 2
|
||||||
else
|
else
|
||||||
posXbuffer[nonDiacriticCounter] + anchorPoint - HALF_VAR_INIT
|
posXbuffer[nonDiacriticCounter] + anchorPointX - HALF_VAR_INIT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else -> throw InternalError("Unsupported alignment: ${thisProp.alignWhere}")
|
else -> throw InternalError("Unsupported alignment: ${thisProp.alignWhere}")
|
||||||
@@ -1326,6 +1317,9 @@ class TerrarumSansBitmap(
|
|||||||
// for BEFORE_N_AFTER, do nothing in here
|
// for BEFORE_N_AFTER, do nothing in here
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// nudge Y pos according to anchor position
|
||||||
|
posYbuffer[charIndex] -= itsProp.diacriticsAnchors[diacriticsType].y
|
||||||
|
|
||||||
// Don't reset extraWidth here!
|
// Don't reset extraWidth here!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1335,7 +1329,7 @@ class TerrarumSansBitmap(
|
|||||||
if (str.isNotEmpty()) {
|
if (str.isNotEmpty()) {
|
||||||
val lastCharProp = glyphProps[str.last()]
|
val lastCharProp = glyphProps[str.last()]
|
||||||
val penultCharProp = glyphProps[str[nonDiacriticCounter]] ?:
|
val penultCharProp = glyphProps[str[nonDiacriticCounter]] ?:
|
||||||
(if (errorOnUnknownChar) throw throw InternalError("No GlyphProps for char '${str[nonDiacriticCounter]}' " +
|
(if (errorOnUnknownChar) throw InternalError("No GlyphProps for char '${str[nonDiacriticCounter]}' " +
|
||||||
"(${str[nonDiacriticCounter].charInfo()})") else nullProp)
|
"(${str[nonDiacriticCounter].charInfo()})") else nullProp)
|
||||||
posXbuffer[posXbuffer.lastIndex] = posXbuffer[posXbuffer.lastIndex - 1] + // DON'T add 1 to house the shadow, it totally breaks stuffs
|
posXbuffer[posXbuffer.lastIndex] = posXbuffer[posXbuffer.lastIndex - 1] + // DON'T add 1 to house the shadow, it totally breaks stuffs
|
||||||
if (lastCharProp != null && lastCharProp.writeOnTop >= 0) {
|
if (lastCharProp != null && lastCharProp.writeOnTop >= 0) {
|
||||||
@@ -2681,6 +2675,7 @@ class TerrarumSansBitmap(
|
|||||||
"symbols_for_legacy_computing_variable.tga",
|
"symbols_for_legacy_computing_variable.tga",
|
||||||
"cyrilic_extB_variable.tga",
|
"cyrilic_extB_variable.tga",
|
||||||
"cyrilic_extA_variable.tga",
|
"cyrilic_extA_variable.tga",
|
||||||
|
"cyrilic_extC_variable.tga",
|
||||||
)
|
)
|
||||||
internal val codeRange = arrayOf( // MUST BE MATCHING WITH SHEET INDICES!!
|
internal val codeRange = arrayOf( // MUST BE MATCHING WITH SHEET INDICES!!
|
||||||
0..0xFF, // SHEET_ASCII_VARW
|
0..0xFF, // SHEET_ASCII_VARW
|
||||||
|
|||||||
@@ -229,16 +229,16 @@ class TerrarumTypewriterBitmap(
|
|||||||
val nudgeY = nudgingBits.ushr(16).toByte().toInt() // signed 8-bit int
|
val nudgeY = nudgingBits.ushr(16).toByte().toInt() // signed 8-bit int
|
||||||
|
|
||||||
val diacriticsAnchors = (0..5).map {
|
val diacriticsAnchors = (0..5).map {
|
||||||
val yPos = 11 + (it / 3) * 2
|
val yPos = 13 - (it / 3) * 2
|
||||||
val shift = (3 - (it % 3)) * 8
|
val shift = (3 - (it % 3)) * 8
|
||||||
val yPixel = pixmap.getPixel(codeStartX, codeStartY + yPos).tagify()
|
val yPixel = pixmap.getPixel(codeStartX, codeStartY + yPos).tagify()
|
||||||
val xPixel = pixmap.getPixel(codeStartX, codeStartY + yPos + 1).tagify()
|
val xPixel = pixmap.getPixel(codeStartX, codeStartY + yPos + 1).tagify()
|
||||||
val y = (yPixel ushr shift) and 127
|
val ySgn = ((yPixel ushr shift) and 128).let { if (it == 0) -1 else 1 }
|
||||||
val x = (xPixel ushr shift) and 127
|
val xSgn = ((xPixel ushr shift) and 128).let { if (it == 0) -1 else 1 }
|
||||||
val yUsed = (yPixel ushr shift) >= 128
|
val y = ((yPixel ushr shift) and 127) * ySgn
|
||||||
val xUsed = (yPixel ushr shift) >= 128
|
val x = ((xPixel ushr shift) and 127) * xSgn
|
||||||
|
|
||||||
DiacriticsAnchor(it, x, y, xUsed, yUsed)
|
DiacriticsAnchor(it, x, y)
|
||||||
}.toTypedArray()
|
}.toTypedArray()
|
||||||
|
|
||||||
val alignWhere = (0..1).fold(0) { acc, y -> acc or ((pixmap.getPixel(codeStartX, codeStartY + y + 15).and(255) != 0).toInt() shl y) }
|
val alignWhere = (0..1).fold(0) { acc, y -> acc or ((pixmap.getPixel(codeStartX, codeStartY + y + 15).and(255) != 0).toInt() shl y) }
|
||||||
|
|||||||
Binary file not shown.
BIN
work_files/cyrilic_variable.psd
LFS
BIN
work_files/cyrilic_variable.psd
LFS
Binary file not shown.
BIN
work_files/internal_variable.psd
LFS
BIN
work_files/internal_variable.psd
LFS
Binary file not shown.
Reference in New Issue
Block a user