Compare commits
35 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
997b7be4c0 | ||
|
23097921cf | ||
|
237c4e2cc2 | ||
|
9bf0a20226 | ||
|
354c0a6f1c | ||
|
46408572bc | ||
|
0d51f7ea1e | ||
|
fcbaa23ccf | ||
|
70365b48d4 | ||
|
3c30e8248e | ||
|
73742a853f | ||
|
24a6dd0f2c | ||
|
2233250e4d | ||
|
c4a88e4d5b | ||
|
cd2932bde1 | ||
|
6fae23a432 | ||
|
6e2494ca0b | ||
|
8a6dc34b2c | ||
|
9f0cf15d2e | ||
|
700ec23bd4 | ||
|
fb93d841a5 | ||
|
a1be402638 | ||
|
9f22e53a3b | ||
|
e309b76c0a | ||
|
4d686a8836 | ||
|
b21bf3fffd | ||
|
7454389f48 | ||
|
b61e9db21e | ||
|
24d6b96ad7 | ||
|
13ad05c0b0 | ||
|
a8e331c322 | ||
|
b600332595 | ||
|
e734d1d0e2 | ||
|
c57ae83bfa | ||
|
c886a89b11 |
@ -25,7 +25,7 @@ Usage: to apply the symbols located in the corners of each key, slide your finge
|
||||
| <img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png" alt="Screenshot-4" /> | <img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png" alt="Screenshot-5" /> | <img src="/fastlane/metadata/android/en-US/images/phoneScreenshots/6.png" alt="Screenshot-6" /> |
|
||||
|
||||
## Similar apps
|
||||
* [Calculator++](https://github.com/Bubu/android-calculatorpp) - Calculator with a similar UX, swipe to corners for advanced math symbols and operators. Works up to Android 13 but maybe unmaintained.
|
||||
* [Calculator++](https://git.bubu1.eu/Bubu/android-calculatorpp) - Calculator with a similar UX, swipe to corners for advanced math symbols and operators.
|
||||
|
||||
## Contributing
|
||||
|
||||
|
13
build.gradle
@ -2,6 +2,10 @@ plugins {
|
||||
id 'com.android.application' version '8.1.1'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
testImplementation "junit:junit:4.13.2"
|
||||
}
|
||||
|
||||
android {
|
||||
namespace 'juloo.keyboard2'
|
||||
compileSdk 34
|
||||
@ -17,10 +21,14 @@ android {
|
||||
sourceSets {
|
||||
main {
|
||||
manifest.srcFile 'AndroidManifest.xml'
|
||||
java.srcDirs = ['srcs']
|
||||
java.srcDirs = ['srcs/juloo.keyboard2']
|
||||
res.srcDirs = ['res', 'build/generated-resources']
|
||||
assets.srcDirs = ['assets']
|
||||
}
|
||||
|
||||
test {
|
||||
java.srcDirs = ['test']
|
||||
}
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
@ -84,9 +92,6 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
}
|
||||
|
||||
tasks.register('buildKeyboardFont') {
|
||||
println "\nBuilding assets/special_font.ttf"
|
||||
mkdir "$buildDir"
|
||||
|
@ -36,6 +36,15 @@ Layout includes some ASCII punctuation but not all, missing: $, &, *, ., /, <, >
|
||||
# cyrl_yaverti
|
||||
Layout includes some ASCII punctuation but not all, missing: ~
|
||||
1 warnings
|
||||
# cyrl_yqukeng_tj
|
||||
Layout doesn't define some important keys, missing: loc esc, loc tab
|
||||
These keys are now added automatically, unexpected: f11_placeholder, f12_placeholder
|
||||
2 warnings
|
||||
# cyrl_yxukeng_os
|
||||
Layout includes some ASCII punctuation but not all, missing: ", #, $, &, ', @, [, ], ~
|
||||
Layout doesn't define some important keys, missing: loc esc, loc tab
|
||||
These keys are now added automatically, unexpected: f11_placeholder, f12_placeholder
|
||||
3 warnings
|
||||
# deva_alt
|
||||
Layout includes some ASCII punctuation but not all, missing: #, $, %, &, ', (, ), +, ., /, :, <, =, >, [, \, ], ^, _, `, {, |, }, ~
|
||||
Layout doesn't define some important keys, missing: loc esc, loc tab
|
||||
@ -64,7 +73,7 @@ Layout includes some ASCII punctuation but not all, missing: (, ), <, >, [, ], {
|
||||
# latn_bepo_fr
|
||||
0 warnings
|
||||
# latn_bone
|
||||
Layout includes some ASCII punctuation but not all, missing: $
|
||||
Layout doesn't define some important keys, missing: loc esc, loc tab
|
||||
Layout redefines the bottom row but some important keys are missing, missing: cursor_left, cursor_right, loc compose, loc end, loc home, loc page_down, loc page_up, loc switch_clipboard, loc switch_greekmath, loc voice_typing, switch_backward
|
||||
2 warnings
|
||||
# latn_colemak
|
||||
|
@ -34,11 +34,19 @@ Here is a complete keyboard file with a single row containing an "a" key on the
|
||||
</keyboard>
|
||||
|
||||
## Keyboard metadata
|
||||
|
||||
The `<keyboard>`...`</keyboard>` pair follows the declaration tag and encloses the whole keyboard. The following properties may be used (The first two appear in the example above):
|
||||
|
||||
* `name`: The name of the keyboard. The name you specify will appear in the Settings menu. If not present, the layout will just appear as “Custom layout”.
|
||||
|
||||
* `script`: The (main) writing system that the keyboard supports. The possible values are `arabic`, `armenian`, `bengali`, `cyrillic`, `devanagari`, `gujarati`, `hangul`, `hebrew`, `latin`, `persian`, `shavian`, and `urdu`. It defaults to `latin`.
|
||||
|
||||
* `numpad_script`: The script to use for the numpad. This is useful for scripts where a different, non-ASCII set of numerals is used, like Devanagari and Arabic. It defaults to the same as `script`.
|
||||
* `bottom_row`: Whether or not to show the common bottom row. It accepts `true` or `false`, and defaults to `true`. If your custom layout defines the bottom row, then specify `bottom_row="false"` to disable the built-in bottom row.
|
||||
|
||||
* `bottom_row`: Whether or not to show the built-in bottom row. It accepts `true` or `false`, and defaults to `true`. If your custom layout defines the bottom row, then specify `bottom_row="false"` to disable the built-in bottom row.
|
||||
+ We recommend your layout use the built-in bottom row, because it is still evolving and your layout will incorporate innovations in future versions. However, to define your own, the current definition of the bottom row is in [bottom_row.xml](https://github.com/Julow/Unexpected-Keyboard/res/xml/bottom_row.xml). You can copypaste this XML into your custom layout as a starting point.
|
||||
+ Likewise, the current definition of the top (number) row is in [number_row.xml](https://github.com/Julow/Unexpected-Keyboard/res/xml/number_row.xml).
|
||||
|
||||
* `locale_extra_keys`: Whether Unexpected should add language-dependent extra keys from [method.xml](../res/xml/method.xml) to this layout. It accepts `true` or `false`, and defaults to `true`. To disable these automatic additions, specify `locale_extra_keys="false"`.
|
||||
|
||||
## Row
|
||||
|
@ -46,7 +46,8 @@ These keys are sent to apps, which are free to ignore them. The keyboard does no
|
||||
`page_up`, `page_down`,
|
||||
`home`, `end`,
|
||||
`backspace`, `delete`,
|
||||
`insert`, `f1`-`f12`,
|
||||
`insert`, `scroll_lock`,
|
||||
`f1`-`f12`,
|
||||
`tab`, `copy`,
|
||||
`paste`, `cut`,
|
||||
`selectAll`, `pasteAsPlainText`,
|
||||
@ -119,7 +120,7 @@ Keys ending in `_placeholder` are normally hidden unless the Fn key is pressed.
|
||||
`ole`, `ole_placeholder`,
|
||||
`meteg`, `meteg_placeholder`
|
||||
|
||||
## Unexpected Keyboard specific
|
||||
## Keyboard behavior keys
|
||||
Value | Meaning
|
||||
:--------------------- | :------
|
||||
`config` | Gear icon; opens Unexpected Keyboard settings.
|
||||
@ -130,6 +131,7 @@ Value | Meaning
|
||||
`switch_forward` | Change the keyboard layout, as long as Unexpected Keyboard has multiple keyboard layouts enabled in the settings.
|
||||
`switch_backward` | Change the keyboard layout to the previous one in the list.
|
||||
`switch_greekmath` | Switch to the Greek & Math Symbols layer.
|
||||
`switch_clipboard` | Switch to the clipboard pane.
|
||||
`change_method` | Open the input method picker dialog.
|
||||
`change_method_prev` | Switch to the previously used input method.
|
||||
`action` | Performs a special context-sensitive operation related to the Enter key. For example, in the Twitter (X) app, `enter` adds a new line, while `action` posts.
|
||||
@ -147,3 +149,42 @@ These keys are known to do nothing.
|
||||
These keys are normally hidden unless the Fn modifier is activated.
|
||||
|
||||
`f11_placeholder` | `f12_placeholder`
|
||||
|
||||
## Complex keys
|
||||
|
||||
More complex keys are of this form:
|
||||
|
||||
```
|
||||
:<kind> <attributes>:<payload>
|
||||
```
|
||||
|
||||
Where `<kind>` is one of the kinds documented below and `<attributes>` is a
|
||||
space separated list of attributes. `<payload>` depends on the `<kind>`.
|
||||
|
||||
Attributes are:
|
||||
- `symbol='Sym'` specifies the symbol to be shown on the keyboard.
|
||||
- `flags='<flags>'` changes the behavior of the key.
|
||||
`<flags>` is a coma separated list of:
|
||||
+ `dim`: Make the symbol dimmer.
|
||||
+ `small`: Make the symbol smaller.
|
||||
|
||||
### Kind `str`
|
||||
|
||||
Defines a key that outputs an arbitrary string. `<payload>` is a string wrapped
|
||||
in single-quotes (`'`), escaping of other single quotes is allowed with `\'`.
|
||||
|
||||
For example:
|
||||
- `:str:'Arbitrary string with a \' inside'`
|
||||
- `:str symbol='Symbol':'Output string'`
|
||||
|
||||
### Kind `char`
|
||||
|
||||
Defines a key that outputs a single character. `<payload>` is the character to
|
||||
output, unquoted.
|
||||
This kind of key can be used to define a character key with a different symbol
|
||||
on it. `char` keys can be modified by `ctrl` and other modifiers, unlike `str`
|
||||
keys.
|
||||
|
||||
For example:
|
||||
- `:char symbol='q':љ`, which is used to implement `ctrl` shortcuts in cyrillic
|
||||
layouts.
|
||||
|
25
res/drawable/doc_anim_swipe.xml
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0"?>
|
||||
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt">
|
||||
<aapt:attr name="android:drawable">
|
||||
<vector android:name="vector" android:width="35dp" android:height="40dp" android:viewportWidth="35" android:viewportHeight="40">
|
||||
<path android:name="trace" android:pathData="M 0 0" android:fillColor="#09b3f1" android:strokeColor="#09b3f1" android:strokeWidth="2" android:strokeLineCap="round"/>
|
||||
</vector>
|
||||
</aapt:attr>
|
||||
<target android:name="trace">
|
||||
<aapt:attr name="android:animation">
|
||||
<set>
|
||||
<objectAnimator android:propertyName="fillAlpha" android:duration="100" android:valueFrom="0" android:valueTo="1" android:valueType="floatType" android:interpolator="@android:interpolator/fast_out_slow_in"/>
|
||||
<objectAnimator android:propertyName="strokeAlpha" android:duration="100" android:valueFrom="0" android:valueTo="1" android:valueType="floatType" android:interpolator="@android:interpolator/fast_out_slow_in"/>
|
||||
<objectAnimator
|
||||
android:propertyName="pathData"
|
||||
android:duration="700"
|
||||
android:valueFrom="M 17.5 20.0 m 2,0 a 2,2 0 1,1 -4,0 a 2,2 0 1,1 4,0 M 17.5 20.0 L 17.5,20.0"
|
||||
android:valueTo=" M 31 4 m 2,0 a 2,2 0 1,1 -4,0 a 2,2 0 1,1 4,0 M 17.5 20.0 L 31 ,4"
|
||||
android:valueType="pathType"
|
||||
android:interpolator="@android:interpolator/linear_out_slow_in"/>
|
||||
<objectAnimator android:propertyName="fillAlpha" android:startOffset="900" android:duration="400" android:valueFrom="1" android:valueTo="0" android:valueType="floatType" android:interpolator="@android:interpolator/linear_out_slow_in"/>
|
||||
<objectAnimator android:propertyName="strokeAlpha" android:startOffset="900" android:duration="400" android:valueFrom="1" android:valueTo="0" android:valueType="floatType" android:interpolator="@android:interpolator/linear_out_slow_in"/>
|
||||
</set>
|
||||
</aapt:attr>
|
||||
</target>
|
||||
</animated-vector>
|
25
res/drawable/doc_key_u.xml
Normal file
@ -0,0 +1,25 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="35dp"
|
||||
android:height="40dp"
|
||||
android:viewportWidth="35.0"
|
||||
android:viewportHeight="40.0">
|
||||
<path
|
||||
android:pathData="M11.26,10.13L23.74,10.13A1.13,1.13 0,0 1,24.87 11.26L24.87,28.74A1.13,1.13 0,0 1,23.74 29.88L11.26,29.88A1.13,1.13 0,0 1,10.13 28.74L10.13,11.26A1.13,1.13 0,0 1,11.26 10.13z"
|
||||
android:fillAlpha="1"
|
||||
android:strokeColor="#404040"
|
||||
android:fillColor="#333333"
|
||||
android:strokeWidth="0.251"
|
||||
android:strokeAlpha="1"/>
|
||||
<path
|
||||
android:pathData="m16.64,17.64l0,3.21q0,0.41 0.16,0.58 0.17,0.17 0.5,0.17 0.31,0 0.61,-0.19 0.29,-0.19 0.46,-0.46l0,-3.33l0.98,0l0,4.6l-0.84,0l-0.06,-0.59q-0.26,0.34 -0.65,0.53 -0.39,0.18 -0.8,0.18 -0.67,0 -1,-0.37 -0.33,-0.37 -0.33,-1.01l0,-3.33z"
|
||||
android:fillColor="#fdfdfd"
|
||||
android:strokeWidth="0.265729"/>
|
||||
<path
|
||||
android:pathData="m12.52,24.71q0.3,0 0.54,0.09 0.25,0.09 0.49,0.35l-0.37,0.33q-0.14,-0.16 -0.28,-0.23 -0.14,-0.08 -0.34,-0.08 -0.27,0 -0.41,0.15 -0.14,0.15 -0.14,0.39 0,0.17 0.08,0.31 0.08,0.14 0.23,0.22 0.15,0.08 0.33,0.08l1.58,0l0,0.46l-0.47,0l0,1.56q-0.1,0.12 -0.26,0.24 -0.16,0.12 -0.41,0.21 -0.24,0.08 -0.58,0.08 -0.45,0 -0.75,-0.17 -0.3,-0.17 -0.44,-0.45 -0.15,-0.28 -0.15,-0.6 0,-0.46 0.24,-0.74 0.24,-0.28 0.66,-0.37l0,-0.02q-0.25,-0.06 -0.4,-0.18 -0.15,-0.12 -0.22,-0.3 -0.07,-0.17 -0.07,-0.37 0,-0.26 0.14,-0.48 0.14,-0.22 0.4,-0.35 0.26,-0.13 0.6,-0.13zM13.18,26.79l-0.58,0q-0.28,0 -0.45,0.12 -0.17,0.12 -0.26,0.32 -0.08,0.19 -0.08,0.39 0,0.2 0.08,0.37 0.08,0.17 0.24,0.28 0.16,0.1 0.42,0.1 0.21,0 0.37,-0.07 0.16,-0.07 0.26,-0.19z"
|
||||
android:fillColor="#cccccc"
|
||||
android:strokeWidth="0.265729"/>
|
||||
<path
|
||||
android:pathData="m22.12,15.25 l-0.61,-0.19 1.54,-3.37l-1.84,0l0,-0.51l2.49,0l0,0.47z"
|
||||
android:fillColor="#cccccc"
|
||||
android:strokeWidth="0.265729"/>
|
||||
</vector>
|
@ -4,7 +4,7 @@
|
||||
<TextView style="@style/paragraph" android:text="@string/launcher_description"/>
|
||||
<Button style="@style/paragraph" android:text="@string/launcher_button_imesettings" android:onClick="launch_imesettings" android:layout_width="wrap_content"/>
|
||||
<Button style="@style/paragraph" android:text="@string/launcher_button_imepicker" android:onClick="launch_imepicker" android:layout_width="wrap_content"/>
|
||||
<VideoView android:id="@+id/launcher_intro_video" android:layout_width="240dp" android:layout_height="wrap_content" android:layout_gravity="center"/>
|
||||
<ImageView style="@style/anim" android:id="@+id/launcher_anim_swipe" android:background="@drawable/doc_key_u" android:src="@drawable/doc_anim_swipe"/>
|
||||
<TextView android:id="@+id/launcher_tryhere_text" style="@style/paragraph" android:text="@string/launcher_tryhere"/>
|
||||
<EditText android:id="@+id/launcher_tryhere_area" style="@style/paragraph" android:inputType="text" android:hint="@string/launcher_tryhere_hint" android:importantForAutofill="no"/>
|
||||
<TextView style="@style/paragraph" android:text="@string/launcher_sourcecode"/>
|
||||
|
@ -71,6 +71,7 @@ Tato aplikace neobsahuje žádné reklamy, nevyužívá připojení k síti a je
|
||||
<string name="pref_theme_e_monet">Monet (dle systému)</string>
|
||||
<string name="pref_theme_e_monetlight">Monet (Světlý)</string>
|
||||
<string name="pref_theme_e_monetdark">Monet (Tmavý)</string>
|
||||
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
|
||||
<string name="pref_swipe_dist_e_very_short">Velmi krátká</string>
|
||||
<string name="pref_swipe_dist_e_short">Krátká</string>
|
||||
<string name="pref_swipe_dist_e_default">Běžná</string>
|
||||
@ -120,6 +121,7 @@ Tato aplikace neobsahuje žádné reklamy, nevyužívá připojení k síti a je
|
||||
<string name="key_descr_home">Home</string>
|
||||
<string name="key_descr_end">End</string>
|
||||
<string name="key_descr_clipboard">Správce schránky</string>
|
||||
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
|
||||
<string name="clipboard_history_heading">Nedávno kopírovaný text</string>
|
||||
<string name="clipboard_pin_heading">Připnout</string>
|
||||
<string name="clipboard_remove_confirm">Odebrat ze schránky?</string>
|
||||
|
@ -71,6 +71,7 @@ Diese App enthält keine Werbung, benötigt keinen Netzwerkzugriff und ist quell
|
||||
<string name="pref_theme_e_monet">Monet (System)</string>
|
||||
<string name="pref_theme_e_monetlight">Monet (Hell)</string>
|
||||
<string name="pref_theme_e_monetdark">Monet (Dunkel)</string>
|
||||
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
|
||||
<string name="pref_swipe_dist_e_very_short">Sehr kurz</string>
|
||||
<string name="pref_swipe_dist_e_short">Kurz</string>
|
||||
<string name="pref_swipe_dist_e_default">Normal</string>
|
||||
@ -120,6 +121,7 @@ Diese App enthält keine Werbung, benötigt keinen Netzwerkzugriff und ist quell
|
||||
<string name="key_descr_home">Pos1</string>
|
||||
<string name="key_descr_end">Ende</string>
|
||||
<string name="key_descr_clipboard">Clipboard-Manager</string>
|
||||
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
|
||||
<string name="clipboard_history_heading">Zuletzt kopierter Text</string>
|
||||
<string name="clipboard_pin_heading">Angeheftet</string>
|
||||
<string name="clipboard_remove_confirm">Aus der Zwischenablage entfernen?</string>
|
||||
|
@ -71,6 +71,7 @@ La misma no contiene ningún anuncio/publicidad, no realiza peticiones de red y
|
||||
<string name="pref_theme_e_monet">Monet (de sistema)</string>
|
||||
<string name="pref_theme_e_monetlight">Monet (claro)</string>
|
||||
<string name="pref_theme_e_monetdark">Monet (oscuro)</string>
|
||||
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
|
||||
<string name="pref_swipe_dist_e_very_short">Muy corta</string>
|
||||
<string name="pref_swipe_dist_e_short">Corta</string>
|
||||
<string name="pref_swipe_dist_e_default">Normal</string>
|
||||
@ -120,6 +121,7 @@ La misma no contiene ningún anuncio/publicidad, no realiza peticiones de red y
|
||||
<string name="key_descr_home">Inicio</string>
|
||||
<string name="key_descr_end">Fin</string>
|
||||
<string name="key_descr_clipboard">Arreglar portapapeles</string>
|
||||
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
|
||||
<string name="clipboard_history_heading">Textos recién copiados</string>
|
||||
<string name="clipboard_pin_heading">Pegado</string>
|
||||
<string name="clipboard_remove_confirm">¿Sacar este portapapeles?</string>
|
||||
|
@ -71,6 +71,7 @@ This application contains no ads, doesn't make any network requests and is Open
|
||||
<!-- <string name="pref_theme_e_monet">Monet (System)</string> -->
|
||||
<!-- <string name="pref_theme_e_monetlight">Monet (Light)</string> -->
|
||||
<!-- <string name="pref_theme_e_monetdark">Monet (Dark)</string> -->
|
||||
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
|
||||
<string name="pref_swipe_dist_e_very_short">بسیار کوتاه</string>
|
||||
<string name="pref_swipe_dist_e_short">کوتاه</string>
|
||||
<string name="pref_swipe_dist_e_default">عادی</string>
|
||||
@ -120,6 +121,7 @@ This application contains no ads, doesn't make any network requests and is Open
|
||||
<!-- <string name="key_descr_home">Home</string> -->
|
||||
<!-- <string name="key_descr_end">End</string> -->
|
||||
<!-- <string name="key_descr_clipboard">Clipboard manager</string> -->
|
||||
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
|
||||
<!-- <string name="clipboard_history_heading">Recently copied text</string> -->
|
||||
<!-- <string name="clipboard_pin_heading">Pinned</string> -->
|
||||
<!-- <string name="clipboard_remove_confirm">Remove this clipboard?</string> -->
|
||||
|
@ -71,6 +71,7 @@ Cette application ne contient pas de publicité, n'accède pas au réseau et est
|
||||
<string name="pref_theme_e_monet">Monet (Système)</string>
|
||||
<string name="pref_theme_e_monetlight">Monet (Clair)</string>
|
||||
<string name="pref_theme_e_monetdark">Monet (Sombre)</string>
|
||||
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
|
||||
<string name="pref_swipe_dist_e_very_short">Très courte</string>
|
||||
<string name="pref_swipe_dist_e_short">Courte</string>
|
||||
<string name="pref_swipe_dist_e_default">Normale</string>
|
||||
@ -120,6 +121,7 @@ Cette application ne contient pas de publicité, n'accède pas au réseau et est
|
||||
<string name="key_descr_home">Début</string>
|
||||
<string name="key_descr_end">Fin</string>
|
||||
<string name="key_descr_clipboard">Presse-papiers</string>
|
||||
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
|
||||
<string name="clipboard_history_heading">Texte récemment copié</string>
|
||||
<string name="clipboard_pin_heading">Épinglé</string>
|
||||
<string name="clipboard_remove_confirm">Supprimer ce presse-papiers ?</string>
|
||||
|
@ -71,6 +71,7 @@ This application contains no ads, doesn't make any network requests and is Open
|
||||
<!-- <string name="pref_theme_e_monet">Monet (System)</string> -->
|
||||
<!-- <string name="pref_theme_e_monetlight">Monet (Light)</string> -->
|
||||
<!-- <string name="pref_theme_e_monetdark">Monet (Dark)</string> -->
|
||||
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
|
||||
<string name="pref_swipe_dist_e_very_short">Veramente breve</string>
|
||||
<string name="pref_swipe_dist_e_short">Breve</string>
|
||||
<string name="pref_swipe_dist_e_default">Normale</string>
|
||||
@ -120,6 +121,7 @@ This application contains no ads, doesn't make any network requests and is Open
|
||||
<!-- <string name="key_descr_home">Home</string> -->
|
||||
<!-- <string name="key_descr_end">End</string> -->
|
||||
<!-- <string name="key_descr_clipboard">Clipboard manager</string> -->
|
||||
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
|
||||
<!-- <string name="clipboard_history_heading">Recently copied text</string> -->
|
||||
<!-- <string name="clipboard_pin_heading">Pinned</string> -->
|
||||
<!-- <string name="clipboard_remove_confirm">Remove this clipboard?</string> -->
|
||||
|
@ -72,6 +72,7 @@ PCキーボードでの半角入力を再現しています。日本語入力、
|
||||
<string name="pref_theme_e_monet">Monet (システム)</string>
|
||||
<string name="pref_theme_e_monetlight">Monet (ライト)</string>
|
||||
<string name="pref_theme_e_monetdark">Monet (ダーク)</string>
|
||||
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
|
||||
<string name="pref_swipe_dist_e_very_short">短い</string>
|
||||
<string name="pref_swipe_dist_e_short">やや短い</string>
|
||||
<string name="pref_swipe_dist_e_default">普通</string>
|
||||
@ -121,6 +122,7 @@ PCキーボードでの半角入力を再現しています。日本語入力、
|
||||
<string name="key_descr_home">Home</string>
|
||||
<string name="key_descr_end">End</string>
|
||||
<string name="key_descr_clipboard">クリップボード</string>
|
||||
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
|
||||
<string name="clipboard_history_heading">最近コピーしたテキスト</string>
|
||||
<string name="clipboard_pin_heading">お気に入り</string>
|
||||
<string name="clipboard_remove_confirm">クリップボードから削除しますか?</string>
|
||||
|
@ -71,6 +71,7 @@
|
||||
<string name="pref_theme_e_monet">모네트 (시스템)</string>
|
||||
<string name="pref_theme_e_monetlight">모네트 (라이트)</string>
|
||||
<string name="pref_theme_e_monetdark">모네트 (다크)</string>
|
||||
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
|
||||
<string name="pref_swipe_dist_e_very_short">매우 짧음</string>
|
||||
<string name="pref_swipe_dist_e_short">짧음</string>
|
||||
<string name="pref_swipe_dist_e_default">보통</string>
|
||||
@ -120,6 +121,7 @@
|
||||
<string name="key_descr_home">홈</string>
|
||||
<string name="key_descr_end">종료</string>
|
||||
<string name="key_descr_clipboard">클립보드 관리자</string>
|
||||
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
|
||||
<string name="clipboard_history_heading">최근에 복사한 텍스트</string>
|
||||
<string name="clipboard_pin_heading">고정</string>
|
||||
<string name="clipboard_remove_confirm">이 클립보드를 제거하시겠습니까?</string>
|
||||
|
@ -71,6 +71,7 @@ Tagad lieliski piemērota izmantošanai ikdienā.
|
||||
<string name="pref_theme_e_monet">Monē (sistēmas)</string>
|
||||
<string name="pref_theme_e_monetlight">Monē (gaišs)</string>
|
||||
<string name="pref_theme_e_monetdark">Monē (tumšs)</string>
|
||||
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
|
||||
<string name="pref_swipe_dist_e_very_short">Ļoti tuvs</string>
|
||||
<string name="pref_swipe_dist_e_short">Tuvs</string>
|
||||
<string name="pref_swipe_dist_e_default">Vidējs</string>
|
||||
@ -122,6 +123,7 @@ Tagad lieliski piemērota izmantošanai ikdienā.
|
||||
<string name="key_descr_home">Sākums</string>
|
||||
<string name="key_descr_end">Beigas</string>
|
||||
<string name="key_descr_clipboard">Starpliktuves pārvaldnieks</string>
|
||||
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
|
||||
<string name="clipboard_history_heading">Nesen starpliktuvē ievietots teksts</string>
|
||||
<string name="clipboard_pin_heading">Piesprausts</string>
|
||||
<string name="clipboard_remove_confirm">Noņemt šo starpliktuves vienumu?</string>
|
||||
|
@ -71,6 +71,7 @@ Aplikacja nie zawiera reklam, nie żąda dostępu do internetu, a jej kod źród
|
||||
<string name="pref_theme_e_monet">Monet (Systemowy)</string>
|
||||
<string name="pref_theme_e_monetlight">Monet (Jasny)</string>
|
||||
<string name="pref_theme_e_monetdark">Monet (Ciemny)</string>
|
||||
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
|
||||
<string name="pref_swipe_dist_e_very_short">Bardzo mała</string>
|
||||
<string name="pref_swipe_dist_e_short">Mała</string>
|
||||
<string name="pref_swipe_dist_e_default">Normalna</string>
|
||||
@ -120,6 +121,7 @@ Aplikacja nie zawiera reklam, nie żąda dostępu do internetu, a jej kod źród
|
||||
<string name="key_descr_home">Home</string>
|
||||
<string name="key_descr_end">End</string>
|
||||
<string name="key_descr_clipboard">Zarządzanie schowkiem</string>
|
||||
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
|
||||
<string name="clipboard_history_heading">Ostatnio skopiowane elementy</string>
|
||||
<string name="clipboard_pin_heading">Przypięte</string>
|
||||
<string name="clipboard_remove_confirm">Usunąć ten element ze schowka?</string>
|
||||
|
@ -71,6 +71,7 @@ Este aplicativo não contém anúncios, não faz nenhuma solicitação de rede e
|
||||
<!-- <string name="pref_theme_e_monet">Monet (System)</string> -->
|
||||
<!-- <string name="pref_theme_e_monetlight">Monet (Light)</string> -->
|
||||
<!-- <string name="pref_theme_e_monetdark">Monet (Dark)</string> -->
|
||||
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
|
||||
<string name="pref_swipe_dist_e_very_short">Bem curto</string>
|
||||
<string name="pref_swipe_dist_e_short">Curto</string>
|
||||
<string name="pref_swipe_dist_e_default">Normal</string>
|
||||
@ -120,6 +121,7 @@ Este aplicativo não contém anúncios, não faz nenhuma solicitação de rede e
|
||||
<string name="key_descr_home">Home</string>
|
||||
<string name="key_descr_end">End</string>
|
||||
<!-- <string name="key_descr_clipboard">Clipboard manager</string> -->
|
||||
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
|
||||
<!-- <string name="clipboard_history_heading">Recently copied text</string> -->
|
||||
<!-- <string name="clipboard_pin_heading">Pinned</string> -->
|
||||
<!-- <string name="clipboard_remove_confirm">Remove this clipboard?</string> -->
|
||||
|
@ -71,6 +71,7 @@ Această aplicație nu conține publicitate, nu folosește rețeaua deloc și e
|
||||
<!-- <string name="pref_theme_e_monet">Monet (System)</string> -->
|
||||
<!-- <string name="pref_theme_e_monetlight">Monet (Light)</string> -->
|
||||
<!-- <string name="pref_theme_e_monetdark">Monet (Dark)</string> -->
|
||||
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
|
||||
<string name="pref_swipe_dist_e_very_short">Foarte apropiată</string>
|
||||
<string name="pref_swipe_dist_e_short">Apropiată</string>
|
||||
<string name="pref_swipe_dist_e_default">Normală</string>
|
||||
@ -120,6 +121,7 @@ Această aplicație nu conține publicitate, nu folosește rețeaua deloc și e
|
||||
<!-- <string name="key_descr_home">Home</string> -->
|
||||
<!-- <string name="key_descr_end">End</string> -->
|
||||
<!-- <string name="key_descr_clipboard">Clipboard manager</string> -->
|
||||
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
|
||||
<!-- <string name="clipboard_history_heading">Recently copied text</string> -->
|
||||
<!-- <string name="clipboard_pin_heading">Pinned</string> -->
|
||||
<!-- <string name="clipboard_remove_confirm">Remove this clipboard?</string> -->
|
||||
|
@ -71,6 +71,7 @@
|
||||
<string name="pref_theme_e_monet">Моне (системная)</string>
|
||||
<string name="pref_theme_e_monetlight">Моне (светлая)</string>
|
||||
<string name="pref_theme_e_monetdark">Моне (темная)</string>
|
||||
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
|
||||
<string name="pref_swipe_dist_e_very_short">Очень короткая</string>
|
||||
<string name="pref_swipe_dist_e_short">Короткая</string>
|
||||
<string name="pref_swipe_dist_e_default">Обычная</string>
|
||||
@ -120,6 +121,7 @@
|
||||
<string name="key_descr_home">Home</string>
|
||||
<string name="key_descr_end">End</string>
|
||||
<string name="key_descr_clipboard">Менеджер буфера обмена</string>
|
||||
<string name="key_descr_combining">Сочетание диакритических знаков</string>
|
||||
<string name="clipboard_history_heading">Недавно скопированный текст</string>
|
||||
<string name="clipboard_pin_heading">Закреплено</string>
|
||||
<string name="clipboard_remove_confirm">Удалить этот буфер обмена?</string>
|
||||
|
@ -71,6 +71,7 @@ Bu uygulama açık kaynaklıdır. Reklam içermez ve internete bağlanmaz."</str
|
||||
<string name="pref_theme_e_monet">Monet (Sisteme uyarla)</string>
|
||||
<string name="pref_theme_e_monetlight">Monet (Açık)</string>
|
||||
<string name="pref_theme_e_monetdark">Monet (Koyu)</string>
|
||||
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
|
||||
<string name="pref_swipe_dist_e_very_short">Çok kısa</string>
|
||||
<string name="pref_swipe_dist_e_short">Kısa</string>
|
||||
<string name="pref_swipe_dist_e_default">Normal</string>
|
||||
@ -120,6 +121,7 @@ Bu uygulama açık kaynaklıdır. Reklam içermez ve internete bağlanmaz."</str
|
||||
<string name="key_descr_home">BAŞ(Sol yön tuşu)</string>
|
||||
<string name="key_descr_end">SON(Sağ yön tuşu)</string>
|
||||
<string name="key_descr_clipboard">Pano</string>
|
||||
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
|
||||
<string name="clipboard_history_heading">Son kopyalanan metin</string>
|
||||
<string name="clipboard_pin_heading">Sabitlendi</string>
|
||||
<string name="clipboard_remove_confirm">Bu sabitlemeyi sil</string>
|
||||
|
@ -71,6 +71,7 @@
|
||||
<string name="pref_theme_e_monet">Моне (Системна)</string>
|
||||
<string name="pref_theme_e_monetlight">Моне (Світла)</string>
|
||||
<string name="pref_theme_e_monetdark">Моне (Темна)</string>
|
||||
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
|
||||
<string name="pref_swipe_dist_e_very_short">Дуже коротка</string>
|
||||
<string name="pref_swipe_dist_e_short">Коротка</string>
|
||||
<string name="pref_swipe_dist_e_default">Звичайна</string>
|
||||
@ -120,6 +121,7 @@
|
||||
<string name="key_descr_home">Home</string>
|
||||
<string name="key_descr_end">End</string>
|
||||
<string name="key_descr_clipboard">Менеджер буфера обміну</string>
|
||||
<string name="key_descr_combining">Комбінування діакритики</string>
|
||||
<string name="clipboard_history_heading">Нещодавно скопійований текст</string>
|
||||
<string name="clipboard_pin_heading">Закріплено</string>
|
||||
<string name="clipboard_remove_confirm">Видалити цей буфер обміну?</string>
|
||||
|
@ -71,6 +71,7 @@ Bây giờ đã hoàn hảo cho việc sử dụng hàng ngày.
|
||||
<!-- <string name="pref_theme_e_monet">Monet (System)</string> -->
|
||||
<!-- <string name="pref_theme_e_monetlight">Monet (Light)</string> -->
|
||||
<!-- <string name="pref_theme_e_monetdark">Monet (Dark)</string> -->
|
||||
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
|
||||
<string name="pref_swipe_dist_e_very_short">Rất gần</string>
|
||||
<string name="pref_swipe_dist_e_short">Gần</string>
|
||||
<string name="pref_swipe_dist_e_default">Trungbình</string>
|
||||
@ -120,6 +121,7 @@ Bây giờ đã hoàn hảo cho việc sử dụng hàng ngày.
|
||||
<!-- <string name="key_descr_home">Home</string> -->
|
||||
<!-- <string name="key_descr_end">End</string> -->
|
||||
<!-- <string name="key_descr_clipboard">Clipboard manager</string> -->
|
||||
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
|
||||
<!-- <string name="clipboard_history_heading">Recently copied text</string> -->
|
||||
<!-- <string name="clipboard_pin_heading">Pinned</string> -->
|
||||
<!-- <string name="clipboard_remove_confirm">Remove this clipboard?</string> -->
|
||||
|
@ -71,6 +71,7 @@
|
||||
<!-- <string name="pref_theme_e_monet">Monet (System)</string> -->
|
||||
<!-- <string name="pref_theme_e_monetlight">Monet (Light)</string> -->
|
||||
<!-- <string name="pref_theme_e_monetdark">Monet (Dark)</string> -->
|
||||
<!-- <string name="pref_theme_e_rosepine">Rosé Pine</string> -->
|
||||
<string name="pref_swipe_dist_e_very_short">非常短</string>
|
||||
<string name="pref_swipe_dist_e_short">短</string>
|
||||
<string name="pref_swipe_dist_e_default">中(默认)</string>
|
||||
@ -120,6 +121,7 @@
|
||||
<string name="key_descr_home">Home</string>
|
||||
<string name="key_descr_end">End</string>
|
||||
<!-- <string name="key_descr_clipboard">Clipboard manager</string> -->
|
||||
<!-- <string name="key_descr_combining">Combining diacritic</string> -->
|
||||
<!-- <string name="clipboard_history_heading">Recently copied text</string> -->
|
||||
<!-- <string name="clipboard_pin_heading">Pinned</string> -->
|
||||
<!-- <string name="clipboard_remove_confirm">Remove this clipboard?</string> -->
|
||||
|
@ -31,6 +31,7 @@
|
||||
<item>@string/pref_theme_e_monet</item>
|
||||
<item>@string/pref_theme_e_monetlight</item>
|
||||
<item>@string/pref_theme_e_monetdark</item>
|
||||
<item>@string/pref_theme_e_rosepine</item>
|
||||
</string-array>
|
||||
<string-array name="pref_theme_values">
|
||||
<item>system</item>
|
||||
@ -45,6 +46,7 @@
|
||||
<item>monet</item>
|
||||
<item>monetlight</item>
|
||||
<item>monetdark</item>
|
||||
<item>rosepine</item>
|
||||
</string-array>
|
||||
<string-array name="pref_swipe_dist_entries">
|
||||
<item>@string/pref_swipe_dist_e_very_short</item>
|
||||
|
@ -20,6 +20,8 @@
|
||||
<item>cyrl_lynyertz_sr</item>
|
||||
<item>cyrl_ueishsht</item>
|
||||
<item>cyrl_yaverti</item>
|
||||
<item>cyrl_yqukeng_tj</item>
|
||||
<item>cyrl_yxukeng_os</item>
|
||||
<item>deva_alt</item>
|
||||
<item>deva_inscript</item>
|
||||
<item>grek_qwerty</item>
|
||||
@ -78,6 +80,8 @@
|
||||
<item>ЉЊЕРТЗ (Српски)</item>
|
||||
<item>УЕИШЩ (Български, БДС)</item>
|
||||
<item>ЯВЕРТЪ</item>
|
||||
<item>Tajiki Persian (Тоҷикӣ)</item>
|
||||
<item>Old Church Slavonic (Црькъвьнословѣньскъ ѩзыкъ)</item>
|
||||
<item>देवनागरी (हिंदी)-2</item>
|
||||
<item>देवनागरी (हिंदी)-1</item>
|
||||
<item>QWERTY (Greek)</item>
|
||||
@ -136,6 +140,8 @@
|
||||
<item>@xml/cyrl_lynyertz_sr</item>
|
||||
<item>@xml/cyrl_ueishsht</item>
|
||||
<item>@xml/cyrl_yaverti</item>
|
||||
<item>@xml/cyrl_yqukeng_tj</item>
|
||||
<item>@xml/cyrl_yxukeng_os</item>
|
||||
<item>@xml/deva_alt</item>
|
||||
<item>@xml/deva_inscript</item>
|
||||
<item>@xml/grek_qwerty</item>
|
||||
|
@ -71,6 +71,7 @@ This application contains no ads, doesn't make any network requests and is Open
|
||||
<string name="pref_theme_e_monet">Monet (System)</string>
|
||||
<string name="pref_theme_e_monetlight">Monet (Light)</string>
|
||||
<string name="pref_theme_e_monetdark">Monet (Dark)</string>
|
||||
<string name="pref_theme_e_rosepine">Rosé Pine</string>
|
||||
<string name="pref_swipe_dist_e_very_short">Very short</string>
|
||||
<string name="pref_swipe_dist_e_short">Short</string>
|
||||
<string name="pref_swipe_dist_e_default">Normal</string>
|
||||
@ -120,6 +121,7 @@ This application contains no ads, doesn't make any network requests and is Open
|
||||
<string name="key_descr_home">Home</string>
|
||||
<string name="key_descr_end">End</string>
|
||||
<string name="key_descr_clipboard">Clipboard manager</string>
|
||||
<string name="key_descr_combining">Combining diacritic</string>
|
||||
<string name="clipboard_history_heading">Recently copied text</string>
|
||||
<string name="clipboard_pin_heading">Pinned</string>
|
||||
<string name="clipboard_remove_confirm">Remove this clipboard?</string>
|
||||
|
@ -56,5 +56,12 @@
|
||||
<item name="android:layout_marginHorizontal">16dp</item>
|
||||
<item name="android:layout_gravity">center</item>
|
||||
</style>
|
||||
<style name="anim">
|
||||
<item name="android:layout_width">100dp</item>
|
||||
<item name="android:layout_height">wrap_content</item>
|
||||
<item name="android:layout_marginVertical">16dp</item>
|
||||
<item name="android:layout_gravity">center</item>
|
||||
<item name="android:adjustViewBounds">true</item>
|
||||
</style>
|
||||
<style name="appTheme" parent="@android:style/Theme.DeviceDefault.DayNight"/>
|
||||
</resources>
|
||||
|
@ -203,4 +203,23 @@
|
||||
<item name="emoji_button_bg">?colorKeyActivated</item>
|
||||
<item name="emoji_color">@android:color/system_accent1_900</item>
|
||||
</style>
|
||||
<style name="RosePine" parent="BaseTheme">
|
||||
<item name="android:isLightTheme">false</item>
|
||||
<item name="colorKeyboard">#191724</item>
|
||||
<item name="colorKey">#26233a</item>
|
||||
<item name="colorKeyActivated">#403d52</item>
|
||||
<item name="keyBorderWidth">0dp</item>
|
||||
<item name="keyBorderWidthActivated">1dp</item>
|
||||
<item name="keyBorderColorLeft">#6e6a86</item>
|
||||
<item name="keyBorderColorTop">#6e6a86</item>
|
||||
<item name="keyBorderColorRight">#6e6a86</item>
|
||||
<item name="keyBorderColorBottom">#6e6a86</item>
|
||||
<item name="colorLabel">#e0def4</item>
|
||||
<item name="colorLabelActivated">#c4a7e7</item>
|
||||
<item name="colorLabelLocked">#31748f</item>
|
||||
<item name="colorSubLabel">#6e6a86</item>
|
||||
<item name="keyBorderRadius">1dp</item>
|
||||
<item name="emoji_button_bg">#26233a</item>
|
||||
<item name="emoji_color">#e0def4</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
@ -10,6 +10,7 @@
|
||||
<subtype android:label="%s" android:languageTag="da" android:imeSubtypeLocale="da_DK" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_da,extra_keys=€|æ|å|ø"/>
|
||||
<subtype android:label="%s" android:languageTag="de" android:imeSubtypeLocale="de_DE" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwertz_de,extra_keys=accent_trema:ä:ö:ü@u|ß|€"/>
|
||||
<subtype android:label="%s" android:languageTag="el" android:imeSubtypeLocale="el" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=grek_qwerty,extra_keys=£@l|€"/>
|
||||
<subtype android:label="%s" android:languageTag="en-AU" android:imeSubtypeLocale="en_AU" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us"/>
|
||||
<subtype android:label="%s" android:languageTag="en-CA" android:imeSubtypeLocale="en_CA" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us"/>
|
||||
<subtype android:label="%s" android:languageTag="en-GB" android:imeSubtypeLocale="en_GB" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_gb,extra_keys=£@l"/>
|
||||
<subtype android:label="%s" android:languageTag="en-US" android:imeSubtypeLocale="en_US" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_us"/>
|
||||
@ -36,6 +37,7 @@
|
||||
<subtype android:label="%s" android:languageTag="ro" android:imeSubtypeLocale="ro_RO" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_ro,extra_keys=ă|â|î|ș|ț|€|$"/>
|
||||
<subtype android:label="%s" android:languageTag="ru" android:imeSubtypeLocale="ru_RU" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=cyrl_jcuken_ru"/>
|
||||
<subtype android:label="%s" android:languageTag="sk" android:imeSubtypeLocale="sk_SK" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwertz_sk,extra_keys=accent_caron:ě:ř:ž:š:č:ň:ď:ľ:ť@f|accent_ring:ů@s|accent_circonflexe:ô@f|accent_trema:ä:ü:ö@u|accent_aigu:á:é:í:ó:ú:ŕ:ś:ĺ:ý@d"/>
|
||||
<subtype android:label="%s" android:languageTag="sr" android:imeSubtypeLocale="sr_" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=cyrl_lynyertz_sr"/>
|
||||
<subtype android:label="%s" android:languageTag="sv" android:imeSubtypeLocale="sv_SE" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_se,extra_keys=accent_aigu:á@d|accent_trema:ä:ö@o|accent_ring:å@s|€"/>
|
||||
<subtype android:label="%s" android:languageTag="tly" android:imeSubtypeLocale="tly_AZ" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="script=latin,default_layout=latn_qwerty_tly,extra_keys=á|ú|â|ê|ı|š|ž"/>
|
||||
<subtype android:label="%s" android:languageTag="tly" android:imeSubtypeLocale="tly_IR" android:imeSubtypeMode="keyboard" android:isAsciiCapable="true" android:imeSubtypeExtraValue="default_layout=arab_hamvaj_tly"/>
|
||||
|
@ -45,7 +45,7 @@
|
||||
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="horizontal_margin_portrait" android:title="@string/pref_portrait" android:summary="%sdp" android:defaultValue="3" min="0" max="30"/>
|
||||
<juloo.keyboard2.prefs.IntSlideBarPreference android:key="horizontal_margin_landscape" android:title="@string/pref_landscape" android:summary="%sdp" android:defaultValue="28" min="0" max="200"/>
|
||||
</PreferenceScreen>
|
||||
<juloo.keyboard2.prefs.SlideBarPreference android:key="character_size" android:title="@string/pref_character_size_title" android:summary="@string/pref_character_size_summary" android:defaultValue="1.0" min="0.75" max="1.5"/>
|
||||
<juloo.keyboard2.prefs.SlideBarPreference android:key="character_size" android:title="@string/pref_character_size_title" android:summary="@string/pref_character_size_summary" android:defaultValue="1.15" min="0.75" max="1.5"/>
|
||||
<juloo.keyboard2.prefs.SlideBarPreference android:key="key_vertical_margin" android:title="@string/pref_key_vertical_space" android:summary="%s%%" android:defaultValue="1.5" min="0" max="5"/>
|
||||
<juloo.keyboard2.prefs.SlideBarPreference android:key="key_horizontal_margin" android:title="@string/pref_key_horizontal_space" android:summary="%s%%" android:defaultValue="2" min="0" max="5"/>
|
||||
<CheckBoxPreference android:key="border_config" android:title="@string/pref_border_config_title" android:defaultValue="false"/>
|
||||
|
@ -15,12 +15,13 @@ let
|
||||
|
||||
ANDROID_SDK_ROOT = "${android.androidsdk}/libexec/android-sdk";
|
||||
|
||||
gradle = pkgs.gradle.override { java = jdk; };
|
||||
# Without this option, aapt2 fails to run with a permissions error.
|
||||
gradle_wrapped = pkgs.runCommandLocal "gradle-wrapped" {
|
||||
nativeBuildInputs = with pkgs; [ makeBinaryWrapper ];
|
||||
} ''
|
||||
mkdir -p $out/bin
|
||||
ln -s ${pkgs.gradle}/bin/gradle $out/bin/gradle
|
||||
ln -s ${gradle}/bin/gradle $out/bin/gradle
|
||||
wrapProgram $out/bin/gradle \
|
||||
--add-flags "-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_SDK_ROOT}/build-tools/${build_tools_version}/aapt2"
|
||||
'';
|
||||
|
@ -1,17 +1,52 @@
|
||||
{
|
||||
// latin
|
||||
"a": "á",
|
||||
"c": "ć",
|
||||
"e": "é",
|
||||
"g": "ǵ",
|
||||
"i": "í",
|
||||
"k": "ḱ",
|
||||
"l": "ĺ",
|
||||
"ń": "ń",
|
||||
"m": "ḿ",
|
||||
"n": "ń",
|
||||
"o": "ó",
|
||||
"p": "ṕ",
|
||||
"r": "ŕ",
|
||||
"s": "ś",
|
||||
"u": "ú",
|
||||
"w": "ẃ",
|
||||
"y": "ý",
|
||||
"z": "ź",
|
||||
// extended latin (multiple diacritics)
|
||||
"â": "ấ",
|
||||
"ă": "ắ",
|
||||
"å": "ǻ",
|
||||
"æ": "ǽ",
|
||||
"ç": "ḉ",
|
||||
"ê": "ế",
|
||||
"ē": "ḗ",
|
||||
"ï": "ḯ",
|
||||
"ô": "ố",
|
||||
"ơ": "ớ",
|
||||
"õ": "ṍ",
|
||||
"ō": "ṓ",
|
||||
"ø": "ǿ",
|
||||
"ṡ": "ṥ",
|
||||
"ü": "ǘ",
|
||||
"ư": "ứ",
|
||||
"ũ": "ṹ",
|
||||
// greek
|
||||
"α": "ά",
|
||||
"ε": "έ",
|
||||
"η": "ή",
|
||||
"ι": "ί",
|
||||
"ο": "ό",
|
||||
"υ": "ύ",
|
||||
// cyrillic
|
||||
"к": "ќ",
|
||||
"г": "ѓ",
|
||||
// combining character
|
||||
"ą": "ą\u0301",
|
||||
"j": "j\u0301",
|
||||
"у": "у\u0301",
|
||||
"е": "е\u0301",
|
||||
|
@ -1,8 +1,12 @@
|
||||
{
|
||||
// latin
|
||||
"2": "ƻ",
|
||||
"b": "ƀ",
|
||||
"c": "ꞓ",
|
||||
"d": "đ",
|
||||
"f": "ꞙ",
|
||||
"g": "ǥ",
|
||||
"h": "ħ",
|
||||
"i": "ɨ",
|
||||
"j": "ɉ",
|
||||
"k": "ꝁ",
|
||||
@ -14,5 +18,13 @@
|
||||
"t": "ŧ",
|
||||
"u": "ʉ",
|
||||
"y": "ɏ",
|
||||
"z": "ƶ"
|
||||
"z": "ƶ",
|
||||
// extended latin
|
||||
"ȷ": "ɟ",
|
||||
// cyrillic
|
||||
"о": "ө",
|
||||
"ӧ": "ӫ",
|
||||
"ү": "ұ",
|
||||
"ь": "ҍ",
|
||||
"х": "ӿ"
|
||||
}
|
||||
|
@ -1,9 +1,14 @@
|
||||
{
|
||||
// latin
|
||||
"a": "ǎ",
|
||||
"c": "č",
|
||||
"d": "ď",
|
||||
"e": "ě",
|
||||
"g": "ǧ",
|
||||
"h": "ȟ",
|
||||
"i": "ǐ",
|
||||
"j": "ǰ", // no uppercase
|
||||
"k": "ǩ",
|
||||
"l": "ľ",
|
||||
"n": "ň",
|
||||
"o": "ǒ",
|
||||
@ -12,5 +17,17 @@
|
||||
"t": "ť",
|
||||
"u": "ǔ",
|
||||
"z": "ž",
|
||||
"ü": "ǚ"
|
||||
// extended latin
|
||||
"ṡ": "ṧ",
|
||||
"ü": "ǚ",
|
||||
"ʒ": "ǯ",
|
||||
// combining character
|
||||
"в": "в\u030C",
|
||||
"г": "г\u030C",
|
||||
"ғ": "ғ\u030C",
|
||||
"д": "д\u030C",
|
||||
"з": "з\u030C",
|
||||
"р": "р\u030C",
|
||||
"т": "т\u030C",
|
||||
"х": "х\u030C"
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
{
|
||||
// latin
|
||||
"c": "ç",
|
||||
"d": "ḑ",
|
||||
"e": "ȩ",
|
||||
@ -9,5 +10,8 @@
|
||||
"n": "ņ",
|
||||
"r": "ŗ",
|
||||
"s": "ş",
|
||||
"t": "ţ"
|
||||
"t": "ţ",
|
||||
// extended latin
|
||||
"ć": "ḉ",
|
||||
"ĕ": "ḝ"
|
||||
}
|
||||
|
@ -1,4 +1,7 @@
|
||||
{
|
||||
"+": "⨣",
|
||||
"≈": "⩯",
|
||||
// latin
|
||||
"a": "â",
|
||||
"c": "ĉ",
|
||||
"e": "ê",
|
||||
@ -9,7 +12,27 @@
|
||||
"o": "ô",
|
||||
"ŝ": "ŝ",
|
||||
"u": "û",
|
||||
"w": "ŵ",
|
||||
"x": "x̂",
|
||||
"y": "ŷ",
|
||||
"z": "ẑ",
|
||||
// extended latin
|
||||
"á": "ấ",
|
||||
"à": "ầ",
|
||||
"ã": "ẫ",
|
||||
"ạ": "ậ",
|
||||
"ả": "ẩ",
|
||||
"é": "ế",
|
||||
"è": "ề",
|
||||
"ẽ": "ễ",
|
||||
"ẹ": "ệ",
|
||||
"ẻ": "ể",
|
||||
"ó": "ố",
|
||||
"ò": "ồ",
|
||||
"ơ": "ổ",
|
||||
"õ": "ỗ",
|
||||
"ọ": "ộ",
|
||||
// combining characters
|
||||
"а": "а\u0302",
|
||||
"е": "е\u0302",
|
||||
"и": "и\u0302",
|
||||
|
@ -17,5 +17,40 @@
|
||||
"w": "ẇ",
|
||||
"x": "ẋ",
|
||||
"y": "ẏ",
|
||||
"z": "ż"
|
||||
"z": "ż",
|
||||
// remove dot since i and j already have one
|
||||
"i": "ı",
|
||||
"j": "ȷ",
|
||||
// extended latin
|
||||
"ā": "ǡ",
|
||||
"ō": "ȱ",
|
||||
"ś": "ṥ",
|
||||
"ṣ": "ṩ",
|
||||
"š": "ṧ",
|
||||
"ſ": "ẛ",
|
||||
// combining character
|
||||
"k": "k\u0307",
|
||||
"l": "l\u0307",
|
||||
"q": "q\u0307",
|
||||
"u": "u\u0307",
|
||||
"v": "v\u0307",
|
||||
"0": "0\u0307",
|
||||
"1": "1\u0307",
|
||||
"2": "2\u0307",
|
||||
"3": "3\u0307",
|
||||
"4": "4\u0307",
|
||||
"5": "5\u0307",
|
||||
"6": "6\u0307",
|
||||
"7": "7\u0307",
|
||||
"8": "8\u0307",
|
||||
"9": "9\u0307",
|
||||
// math
|
||||
"∈": "⋵",
|
||||
"⨯": "⨰",
|
||||
"∧": "⩑",
|
||||
"∨": "⩒",
|
||||
"≡": "⩧",
|
||||
"~": "⩪",
|
||||
"⊆": "⫃",
|
||||
"⊇": "⫄"
|
||||
}
|
||||
|
@ -1,14 +1,34 @@
|
||||
{
|
||||
// latin
|
||||
"a": "ạ",
|
||||
"b": "ḅ",
|
||||
"d": "ḍ",
|
||||
"e": "ẹ",
|
||||
"h": "ḥ",
|
||||
"i": "ị",
|
||||
"k": "ḳ",
|
||||
"l": "ḷ",
|
||||
"m": "ṃ",
|
||||
"n": "ṇ",
|
||||
"o": "ọ",
|
||||
"r": "ṛ",
|
||||
"s": "ṣ",
|
||||
"t": "ṭ",
|
||||
"u": "ụ",
|
||||
"v": "ṿ",
|
||||
"w": "ẉ",
|
||||
"y": "ỵ",
|
||||
"z": "ẓ",
|
||||
// extended latin
|
||||
"ă": "ặ",
|
||||
"â": "ậ",
|
||||
"e": "ẹ",
|
||||
"ê": "ệ",
|
||||
"i": "ị",
|
||||
"o": "ọ",
|
||||
"ô": "ộ",
|
||||
"ơ": "ợ",
|
||||
"u": "ụ",
|
||||
"ṡ": "ṩ",
|
||||
"ư": "ự",
|
||||
"y": "ỵ"
|
||||
// math
|
||||
"-": "⨪",
|
||||
"+": "⨥",
|
||||
"=": "⩦"
|
||||
}
|
||||
|
@ -1,7 +1,11 @@
|
||||
{
|
||||
" ": "˝",
|
||||
// latin
|
||||
"o": "ő",
|
||||
"u": "ű",
|
||||
" ": "˝",
|
||||
// cyrillic
|
||||
"у": "ӳ",
|
||||
// combining character
|
||||
"a": "a\u030b",
|
||||
"e": "e\u030b",
|
||||
"i": "i\u030b",
|
||||
|
@ -1,8 +1,38 @@
|
||||
{
|
||||
// latin
|
||||
"a": "à",
|
||||
"e": "è",
|
||||
"i": "ì",
|
||||
"n": "ǹ",
|
||||
"o": "ò",
|
||||
"u": "ù",
|
||||
"ü": "ǜ"
|
||||
"w": "ẁ",
|
||||
"y": "ỳ",
|
||||
// extended latin
|
||||
"â": "ầ",
|
||||
"ă": "ằ",
|
||||
"ê": "ề",
|
||||
"ē": "ḕ",
|
||||
"ơ": "ờ",
|
||||
"ô": "ồ",
|
||||
"ō": "ṑ",
|
||||
"ü": "ǜ",
|
||||
"ư": "ừ",
|
||||
// greek (technically not a grave, but a varia)
|
||||
"α": "ὰ",
|
||||
"ε": "ὲ",
|
||||
"η": "ὴ",
|
||||
"ι": "ὶ",
|
||||
"ο": "ὸ",
|
||||
"υ": "ὺ",
|
||||
"ω": "ὼ",
|
||||
// there is more like ἒ, ᾣ, etc
|
||||
// cyrillic
|
||||
"е": "ѐ",
|
||||
"и": "ѝ",
|
||||
// combining character
|
||||
"ɔ": "ɔ\u0300",
|
||||
"s": "s\u0300",
|
||||
"ʌ": "ʌ\u0300",
|
||||
"z": "z\u0300"
|
||||
}
|
||||
|
@ -1,8 +1,35 @@
|
||||
{
|
||||
// latin
|
||||
"a": "ā",
|
||||
"e": "ē",
|
||||
"g": "ḡ",
|
||||
"i": "ī",
|
||||
"o": "ō",
|
||||
"u": "ū",
|
||||
"ü": "ǖ"
|
||||
"y": "ȳ",
|
||||
// extended latin
|
||||
"æ": "ǣ",
|
||||
"ä": "ǟ",
|
||||
"ȧ": "ǡ",
|
||||
"è": "ḕ",
|
||||
"é": "ḗ",
|
||||
"ḷ": "ḹ",
|
||||
"ṛ": "ṝ",
|
||||
"ö": "ȫ",
|
||||
"ȯ": "ȱ",
|
||||
"ǫ": "ǭ",
|
||||
"õ": "ȭ",
|
||||
"ò": "ṑ",
|
||||
"ó": "ṓ",
|
||||
"ü": "ǖ", // there is also ṻ
|
||||
// cyrillic
|
||||
"и": "ӣ",
|
||||
"у": "ӯ",
|
||||
// greek
|
||||
"α": "ᾱ",
|
||||
"ι": "ῑ",
|
||||
"υ": "ῡ",
|
||||
// combining characters
|
||||
"l": "l\u0304",
|
||||
"r": "r\u0304"
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
{
|
||||
// latin
|
||||
"a": "ą",
|
||||
"e": "ę",
|
||||
"i": "į",
|
||||
"k": "ķ",
|
||||
"l": "ļ",
|
||||
"n": "ņ",
|
||||
"o": "ǫ",
|
||||
"u": "ų"
|
||||
"u": "ų",
|
||||
// extended latin
|
||||
"ō": "ǭ"
|
||||
}
|
||||
|
@ -1,4 +1,11 @@
|
||||
{
|
||||
// latin
|
||||
"a": "å",
|
||||
"u": "ů"
|
||||
"u": "ů",
|
||||
"w": "ẘ", // no uppercase
|
||||
"y": "ẙ", // no uppercase
|
||||
// extended latin
|
||||
"á": "ǻ",
|
||||
// extra
|
||||
"~": "⸛"
|
||||
}
|
||||
|
@ -8,7 +8,11 @@
|
||||
"l": "ł",
|
||||
"n": "ꞥ",
|
||||
"o": "ø",
|
||||
"ó": "ǿ",
|
||||
"ɔ": "ꬿ",
|
||||
"r": "ꞧ",
|
||||
"s": "ꞩ",
|
||||
"t": "ⱦ"
|
||||
"t": "ⱦ",
|
||||
"u": "ꞹ",
|
||||
"v": "ꝟ"
|
||||
}
|
||||
|
@ -1,4 +1,6 @@
|
||||
{
|
||||
// arabic numbers
|
||||
"0": "₀",
|
||||
"1": "₁",
|
||||
"2": "₂",
|
||||
"3": "₃",
|
||||
@ -8,12 +10,13 @@
|
||||
"7": "₇",
|
||||
"8": "₈",
|
||||
"9": "₉",
|
||||
"0": "₀",
|
||||
// math operators
|
||||
"+": "₊",
|
||||
"-": "₋",
|
||||
"=": "₌",
|
||||
"(": "₍",
|
||||
")": "₎",
|
||||
// latin
|
||||
"a": "ₐ",
|
||||
"e": "ₑ",
|
||||
"h": "ₕ",
|
||||
@ -30,5 +33,13 @@
|
||||
"t": "ₜ",
|
||||
"u": "ᵤ",
|
||||
"v": "ᵥ",
|
||||
"x": "ₓ"
|
||||
"x": "ₓ",
|
||||
// extended latin
|
||||
"ə": "ₔ",
|
||||
// greek
|
||||
"β": "ᵦ",
|
||||
"γ": "ᵧ",
|
||||
"ρ": "ᵨ",
|
||||
"φ": "ᵩ",
|
||||
"χ": "ᵪ"
|
||||
}
|
||||
|
@ -1,4 +1,6 @@
|
||||
{
|
||||
// numbers
|
||||
"0": "⁰",
|
||||
"1": "¹",
|
||||
"2": "²",
|
||||
"3": "³",
|
||||
@ -8,12 +10,18 @@
|
||||
"7": "⁷",
|
||||
"8": "⁸",
|
||||
"9": "⁹",
|
||||
"0": "⁰",
|
||||
// math operators
|
||||
"+": "⁺",
|
||||
"-": "⁻",
|
||||
"=": "⁼",
|
||||
"(": "⁽",
|
||||
")": "⁾",
|
||||
// latin
|
||||
"n": "ⁿ",
|
||||
|
||||
// since there are no more "superscript" characters,
|
||||
// we substitute with "modifier letter small"s which looks the same
|
||||
// latin
|
||||
"a": "ᵃ",
|
||||
"b": "ᵇ",
|
||||
"c": "ᶜ",
|
||||
@ -26,10 +34,11 @@
|
||||
"j": "ʲ",
|
||||
"k": "ᵏ",
|
||||
"l": "ˡ",
|
||||
// see above for n
|
||||
"m": "ᵐ",
|
||||
"n": "ⁿ",
|
||||
"o": "ᵒ",
|
||||
"p": "ᵖ",
|
||||
"q": "ꟴ", // there is no proper lowercase superscript q
|
||||
"r": "ʳ",
|
||||
"s": "ˢ",
|
||||
"t": "ᵗ",
|
||||
@ -38,5 +47,47 @@
|
||||
"w": "ʷ",
|
||||
"x": "ˣ",
|
||||
"y": "ʸ",
|
||||
"z": "ᶻ"
|
||||
"z": "ᶻ",
|
||||
// extended latin
|
||||
"ɐ": "ᵄ",
|
||||
"ᴂ": "ᵆ",
|
||||
"ɕ": "ᶝ",
|
||||
"ə": "ᵊ",
|
||||
"ɛ": "ᵋ",
|
||||
"ɜ": "ᶟ", // turned open e, ↓ not the same
|
||||
"ᴈ": "ᵌ", // reversed open e
|
||||
"ɥ": "ᶣ",
|
||||
"ɦ": "ʱ",
|
||||
"ᴉ": "ᵎ",
|
||||
"ɨ": "ᶤ",
|
||||
"ɟ": "ᶡ",
|
||||
"ɱ": "ᶬ",
|
||||
"ɯ": "ᵚ",
|
||||
"ɰ": "ᶭ",
|
||||
"ŋ": "ᵑ",
|
||||
"ᴝ": "ᵙ",
|
||||
"ɵ": "ᶱ",
|
||||
"œ": "ꟹ",
|
||||
"ɔ": "ᵓ",
|
||||
"ɹ": "ʴ",
|
||||
"ɻ": "ʵ",
|
||||
"ʁ": "ʶ",
|
||||
"ʂ": "ᶳ",
|
||||
"ʉ": "ᶶ",
|
||||
"ʃ": "ᶴ",
|
||||
"ʒ": "ᶾ",
|
||||
"ʍ": "ꭩ",
|
||||
// greek
|
||||
"ɒ": "ᶛ",
|
||||
"β": "ᵝ",
|
||||
"ɣ": "ˠ",
|
||||
"δ": "ᵟ",
|
||||
"φ": "ᵠ",
|
||||
"χ": "ᵡ",
|
||||
"ι": "ᶥ",
|
||||
"ʊ": "ᶷ",
|
||||
"ʌ": "ᶺ",
|
||||
"θ": "ᶿ",
|
||||
// cyrillic
|
||||
"ө": "ᶱ"
|
||||
}
|
||||
|
@ -1,13 +1,21 @@
|
||||
{
|
||||
// latin
|
||||
"a": "ã",
|
||||
"e": "ẽ",
|
||||
"i": "ĩ",
|
||||
"n": "ñ",
|
||||
"o": "õ",
|
||||
"u": "ũ",
|
||||
"v": "ṽ",
|
||||
"y": "ỹ",
|
||||
// extended latin
|
||||
"ă": "ẵ",
|
||||
"â": "ẫ",
|
||||
"ê": "ễ",
|
||||
"ơ": "ỡ",
|
||||
"ư": "ữ"
|
||||
"ō": "ȭ",
|
||||
"ó": "ṍ",
|
||||
"ö": "ṏ",
|
||||
"ư": "ữ",
|
||||
"ú": "ṹ"
|
||||
}
|
||||
|
@ -1,8 +1,54 @@
|
||||
{
|
||||
// fun
|
||||
"~": "⍨",
|
||||
"*": "⍣",
|
||||
"∇": "⍢",
|
||||
"°": "⍤",
|
||||
// latin
|
||||
"a": "ä",
|
||||
"e": "ë",
|
||||
"h": "ḧ",
|
||||
"i": "ï",
|
||||
"o": "ö",
|
||||
"t": "ẗ",
|
||||
"u": "ü",
|
||||
"y": "ÿ"
|
||||
"w": "ẅ",
|
||||
"x": "ẍ",
|
||||
"y": "ÿ",
|
||||
// extended latin
|
||||
"ā": "ǟ",
|
||||
"ō": "ȫ",
|
||||
"õ": "ṏ",
|
||||
"í": "ḯ",
|
||||
"ū": "ǖ", // there is also ṻ
|
||||
"ú": "ǘ",
|
||||
"ù": "ǜ",
|
||||
"ǔ": "ǚ",
|
||||
// greek
|
||||
"ι": "ϊ",
|
||||
"υ": "ϋ",
|
||||
"ὺ": "ῢ",
|
||||
"ύ": "ΰ",
|
||||
"ῦ": "ῧ",
|
||||
"ϒ": "ϔ",
|
||||
// cyrillic
|
||||
"а": "ӓ",
|
||||
"ә": "ӛ",
|
||||
"ж": "ӝ",
|
||||
"з": "ӟ",
|
||||
"и": "ӥ",
|
||||
"о": "ӧ",
|
||||
"ө": "ӫ",
|
||||
"э": "ӭ",
|
||||
"у": "ӱ",
|
||||
"ч": "ӵ",
|
||||
"ы": "ӹ",
|
||||
// combining character
|
||||
"c": "c\u0308",
|
||||
"j": "j\u0308",
|
||||
"k": "k\u0308",
|
||||
"l": "l\u0308",
|
||||
"m": "m\u0308",
|
||||
"n": "n\u0308",
|
||||
"s": "s\u0308"
|
||||
}
|
||||
|
@ -90,11 +90,21 @@ def parse_sequences_file_xkb(fname, xkb_char_extra_names):
|
||||
seqs.append(s)
|
||||
return seqs
|
||||
|
||||
# Basic support for comments in json files. Reads a file
|
||||
def strip_cstyle_comments(inp):
|
||||
def strip_line(line):
|
||||
i = line.find("//")
|
||||
return line[:i] + "\n" if i >= 0 else line
|
||||
return "".join(map(strip_line, inp))
|
||||
|
||||
# Parse from a json file containing a dictionary sequence → result string.
|
||||
def parse_sequences_file_json(fname):
|
||||
try:
|
||||
with open(fname, "r") as inp:
|
||||
seqs = json.load(inp)
|
||||
seqs = json.loads(strip_cstyle_comments(inp))
|
||||
return list(seqs.items())
|
||||
except Exception as e:
|
||||
print("Failed parsing '%s': %s" % (fname, str(e)), file=sys.stderr)
|
||||
|
||||
# Format of the sequences file is determined by its extension
|
||||
def parse_sequences_file(fname, xkb_char_extra_names={}):
|
||||
@ -146,8 +156,10 @@ def add_sequences_to_trie(seqs, trie):
|
||||
|
||||
# Compile the trie into a state machine.
|
||||
def make_automata(tries):
|
||||
previous_leafs = {} # Deduplicate leafs
|
||||
states = []
|
||||
def add_tree(t):
|
||||
this_node_index = len(states)
|
||||
# Index and size of the new node
|
||||
i = len(states)
|
||||
s = len(t.keys())
|
||||
@ -159,11 +171,14 @@ def make_automata(tries):
|
||||
states.append((None, None))
|
||||
# Add nested nodes and fill the current node
|
||||
for c in sorted(t.keys()):
|
||||
node_i = len(states)
|
||||
add_node(t[c])
|
||||
states[i] = (c, node_i)
|
||||
states[i] = (c, add_node(t[c]))
|
||||
i += 1
|
||||
return this_node_index
|
||||
def add_leaf(c):
|
||||
if c in previous_leafs:
|
||||
return previous_leafs[c]
|
||||
this_node_index = len(states)
|
||||
previous_leafs[c] = this_node_index
|
||||
# There are two encoding for leafs: character final state for 15-bit
|
||||
# characters and string final state for the rest.
|
||||
if len(c) > 1 or ord(c[0]) > 32767: # String final state
|
||||
@ -173,16 +188,14 @@ def make_automata(tries):
|
||||
states.append((c, 0))
|
||||
else: # Character final state
|
||||
states.append((c, 1))
|
||||
return this_node_index
|
||||
def add_node(n):
|
||||
if type(n) == str:
|
||||
add_leaf(n)
|
||||
return add_leaf(n)
|
||||
else:
|
||||
add_tree(n)
|
||||
return add_tree(n)
|
||||
states.append((1, 1)) # Add an empty state at the beginning.
|
||||
entry_states = {}
|
||||
for tname, tree_root in tries.items():
|
||||
entry_states[tname] = len(states)
|
||||
add_tree(tree_root)
|
||||
entry_states = { n: add_tree(root) for n, root in tries.items() }
|
||||
return entry_states, states
|
||||
|
||||
# Debug
|
||||
|
168
srcs/compose/compose/cyrillic.json
Normal file
@ -0,0 +1,168 @@
|
||||
{
|
||||
"\"": {
|
||||
"і": "ї"
|
||||
},
|
||||
",": {
|
||||
"г": "ӻ",
|
||||
"к": "ӄ",
|
||||
"л": "ԓ",
|
||||
"н": "ӈ",
|
||||
"х": "ӽ",
|
||||
"ѧ": "ӊ"
|
||||
},
|
||||
".": {
|
||||
"г": "ӷ",
|
||||
"ж": "җ",
|
||||
"й": "ҋ",
|
||||
"к": "қ",
|
||||
"л": "ԯ",
|
||||
"м": "ӎ",
|
||||
"н": "ӊ",
|
||||
"х": "ҳ",
|
||||
"ч": "ҷ",
|
||||
"і": "ї"
|
||||
},
|
||||
"а": {
|
||||
"е": "ѣ",
|
||||
"у": "ѡ",
|
||||
"ч": "combining_acute",
|
||||
"ы": "ѣ",
|
||||
"ь": "ꙙ",
|
||||
"ꙋ": "ꙍ",
|
||||
"ꙑ": "ѣ"
|
||||
},
|
||||
"б": {
|
||||
"ч": "combining_slavonic_psili"
|
||||
},
|
||||
"г": {
|
||||
",": "ӻ",
|
||||
".": "ӷ",
|
||||
"й": "ғ",
|
||||
"к": "ґ",
|
||||
"х": "ҁ",
|
||||
"ј": "ғ"
|
||||
},
|
||||
"д": {
|
||||
"е": "ꙉ",
|
||||
"ж": "џ",
|
||||
"з": "ꙃ",
|
||||
"й": "ꙉ",
|
||||
"ј": "ꙉ",
|
||||
"ѥ": "ђ"
|
||||
},
|
||||
"е": {
|
||||
"ч": "combining_trema"
|
||||
},
|
||||
"ж": {
|
||||
".": "җ"
|
||||
},
|
||||
"з": {
|
||||
"ф": "ҙ"
|
||||
},
|
||||
"и": {
|
||||
"и": "ӣ",
|
||||
"у": "ѵ"
|
||||
},
|
||||
"й": {
|
||||
".": "ҋ",
|
||||
"ч": "combining_breve"
|
||||
},
|
||||
"к": {
|
||||
",": "ӄ",
|
||||
".": "қ",
|
||||
"г": "ґ",
|
||||
"с": "ѯ",
|
||||
"х": "ҁ",
|
||||
"ш": "ѯ"
|
||||
},
|
||||
"л": {
|
||||
",": "ԓ",
|
||||
".": "ԯ",
|
||||
"ь": "љ"
|
||||
},
|
||||
"м": {
|
||||
".": "ӎ"
|
||||
},
|
||||
"н": {
|
||||
",": "ӈ",
|
||||
"·": "ԩ",
|
||||
"ч": "combining_titlo",
|
||||
"ь": "њ"
|
||||
},
|
||||
"о": {
|
||||
"т": "ѿ",
|
||||
"у": "ѹ",
|
||||
"ч": "combining_inverted_breve"
|
||||
},
|
||||
"п": {
|
||||
"с": "ѱ"
|
||||
},
|
||||
"т": {
|
||||
"й": "ћ",
|
||||
"ф": "ѳ",
|
||||
"ј": "ћ"
|
||||
},
|
||||
"у": {
|
||||
"и": "ѵ",
|
||||
"й": "ў",
|
||||
"у": "ӯ",
|
||||
"ч": "combining_porkrytie",
|
||||
"і": "ѵ",
|
||||
"ј": "ў"
|
||||
},
|
||||
"х": {
|
||||
",": "ӽ",
|
||||
".": "ҳ",
|
||||
"ч": "combining_slavonic_dasia"
|
||||
},
|
||||
"ч": {
|
||||
".": "ҷ",
|
||||
"а": "combining_acute",
|
||||
"б": "combining_slavonic_psili",
|
||||
"е": "combining_trema",
|
||||
"й": "combining_breve",
|
||||
"н": "combining_titlo",
|
||||
"о": "combining_inverted_breve",
|
||||
"у": "combining_pokrytie",
|
||||
"х": "combining_slavonic_dasia",
|
||||
"ч": "combining_payerok",
|
||||
"ч": "combining_payerok",
|
||||
"ъ": "combining_vertical_tilde",
|
||||
"ю": "combining_grave",
|
||||
"ј": "combining_breve",
|
||||
"ѧ": "combining_vzmet"
|
||||
},
|
||||
"ш": {
|
||||
"т": "щ"
|
||||
},
|
||||
"ъ": {
|
||||
"ч": "combining_vertical_tilde"
|
||||
},
|
||||
"ю": {
|
||||
"а": "ꙓ",
|
||||
"е": "ё",
|
||||
"м": "ѭ",
|
||||
"н": "ѩ",
|
||||
"ч": "combining_grave"
|
||||
},
|
||||
"я": {
|
||||
"ь": "ꙝ"
|
||||
},
|
||||
"і": {
|
||||
"\"": "ї",
|
||||
".": "ї",
|
||||
"у": "ѵ",
|
||||
"і": "ӣ"
|
||||
},
|
||||
"ј": {
|
||||
"а": "ꙗ",
|
||||
"ч": "combining_breve",
|
||||
"ѣ": "ꙝ"
|
||||
},
|
||||
"ѡ": {
|
||||
"т": "ѿ"
|
||||
},
|
||||
"ѧ": {
|
||||
"ч": "combining_vzmet"
|
||||
}
|
||||
}
|
@ -3,5 +3,9 @@
|
||||
"s": "Š",
|
||||
"c": "Č",
|
||||
"z": "Ž"
|
||||
},
|
||||
"\\": {
|
||||
"n": "\\n",
|
||||
"t": "\\t"
|
||||
}
|
||||
}
|
||||
|
219
srcs/compose/fn.json
Normal file
@ -0,0 +1,219 @@
|
||||
{
|
||||
"1": "f1",
|
||||
"2": "f2",
|
||||
"3": "f3",
|
||||
"4": "f4",
|
||||
"5": "f5",
|
||||
"6": "f6",
|
||||
"7": "f7",
|
||||
"8": "f8",
|
||||
"9": "f9",
|
||||
"0": "f10",
|
||||
"<": "«",
|
||||
">": "»",
|
||||
"{": "‹",
|
||||
"}": "›",
|
||||
"[": "‘",
|
||||
"]": "’",
|
||||
"(": "“",
|
||||
")": "”",
|
||||
"'": "‚",
|
||||
"\"": "„",
|
||||
"-": "–",
|
||||
"_": "—",
|
||||
"^": "¬",
|
||||
"%": "‰",
|
||||
"=": "≈",
|
||||
"u": "µ",
|
||||
"a": "æ",
|
||||
"o": "œ",
|
||||
"*": "°",
|
||||
".": "…",
|
||||
",": "·",
|
||||
"!": "¡",
|
||||
"?": "¿",
|
||||
"|": "¦",
|
||||
"§": "¶",
|
||||
"†": "‡",
|
||||
"×": "∙",
|
||||
" ": "nbsp",
|
||||
|
||||
// arrows
|
||||
"↖": "⇖",
|
||||
"↑": "⇑",
|
||||
"↗": "⇗",
|
||||
"←": "⇐",
|
||||
"→": "⇒",
|
||||
"↙": "⇙",
|
||||
"↓": "⇓",
|
||||
"↘": "⇘",
|
||||
"↔": "⇔",
|
||||
"↕": "⇕",
|
||||
// Currency symbols
|
||||
"e": "€",
|
||||
"l": "£",
|
||||
"r": "₹",
|
||||
"y": "¥",
|
||||
"c": "¢",
|
||||
"p": "₽",
|
||||
"b": "₱",
|
||||
"h": "₴",
|
||||
"z": "₿",
|
||||
// avoid showing these twice
|
||||
"€": "removed",
|
||||
"£": "removed",
|
||||
// alternative greek letters
|
||||
"π": "ϖ",
|
||||
"θ": "ϑ",
|
||||
"Θ": "ϴ",
|
||||
"ε": "ϵ",
|
||||
"β": "ϐ",
|
||||
"ρ": "ϱ",
|
||||
"σ": "ς",
|
||||
"γ": "ɣ",
|
||||
"φ": "ϕ",
|
||||
"υ": "ϒ",
|
||||
"κ": "ϰ",
|
||||
// alternative math characters
|
||||
"∪": "⋃",
|
||||
"∩": "⋂",
|
||||
"∃": "∄",
|
||||
"∈": "∉",
|
||||
"∫": "∮",
|
||||
"Π": "∏",
|
||||
"Σ": "∑",
|
||||
"∨": "⋁",
|
||||
"∧": "⋀",
|
||||
"⊷": "⊶",
|
||||
"⊂": "⊆",
|
||||
"⊃": "⊇",
|
||||
"±": "∓",
|
||||
|
||||
// hebrew niqqud
|
||||
"ק": "qamats", // kamatz
|
||||
"ר": "hataf_qamats", // reduced kamatz
|
||||
"ו": "holam",
|
||||
"ם": "rafe",
|
||||
"פ": "patah", // patach
|
||||
"ש": "sheva",
|
||||
"ד": "dagesh", // or mapiq
|
||||
"ח": "hiriq",
|
||||
"ף": "hataf_patah", // reduced patach
|
||||
"ז": "qubuts", // kubuts
|
||||
"ס": "segol",
|
||||
"ב": "hataf_segol", // reduced segol
|
||||
"צ": "tsere",
|
||||
|
||||
// Devanagari symbols
|
||||
"ए": "ऍ",
|
||||
"े": "ॅ",
|
||||
"ऐ": "ऎ",
|
||||
"ै": "ॆ",
|
||||
"ऋ": "ॠ",
|
||||
"ृ": "ॄ",
|
||||
"ळ": "ऴ",
|
||||
"र": "ऱ",
|
||||
"क": "क़",
|
||||
"ख": "ख़",
|
||||
"ग": "ग़",
|
||||
"घ": "ॻ",
|
||||
"ढ": "ढ़",
|
||||
"न": "ऩ",
|
||||
"ड": "ड़",
|
||||
"ट": "ॸ",
|
||||
"ण": "ॾ",
|
||||
"फ": "फ़",
|
||||
"ऌ": "ॡ",
|
||||
"ॢ": "ॣ",
|
||||
"औ": "ॵ",
|
||||
"ौ": "ॏ",
|
||||
"ओ": "ऒ",
|
||||
"ो": "ॊ",
|
||||
"च": "ॼ",
|
||||
"ज": "ज़",
|
||||
"ब": "ॿ",
|
||||
"व": "ॺ",
|
||||
"य": "य़",
|
||||
"अ": "ॲ",
|
||||
"आ": "ऑ",
|
||||
"ा": "ॉ",
|
||||
"झ": "ॹ",
|
||||
"ई": "ॴ",
|
||||
"ी": "ऻ",
|
||||
"इ": "ॳ",
|
||||
"ि": "ऺ",
|
||||
"उ": "ॶ",
|
||||
"ऊ": "ॷ",
|
||||
"ु": "ऄ",
|
||||
"ष": "क्ष",
|
||||
"थ": "त्र",
|
||||
"द": "द्र",
|
||||
"प": "प्र",
|
||||
"श": "श्र",
|
||||
"छ": "श्च",
|
||||
"ँ": "ऀ",
|
||||
"₹": "₨",
|
||||
"ॖ": "ॗ",
|
||||
"॓": "॔",
|
||||
"॰": "ॱ",
|
||||
"।": "॥",
|
||||
"ं": "ॕ",
|
||||
"़": "ॎ",
|
||||
"ऽ": "ॽ",
|
||||
|
||||
// Persian numbers
|
||||
"۱": "f1",
|
||||
"۲": "f2",
|
||||
"۳": "f3",
|
||||
"۴": "f4",
|
||||
"۵": "f5",
|
||||
"۶": "f6",
|
||||
"۷": "f7",
|
||||
"۸": "f8",
|
||||
"۹": "f9",
|
||||
// Arabic numbers
|
||||
"۰": "f10",
|
||||
"١": "f1",
|
||||
"٢": "f2",
|
||||
"٣": "f3",
|
||||
"٤": "f4",
|
||||
"٥": "f5",
|
||||
"٦": "f6",
|
||||
"٧": "f7",
|
||||
"٨": "f8",
|
||||
"٩": "f9",
|
||||
"٠": "f10",
|
||||
|
||||
// Cyrillic
|
||||
"ꙑ": "ы",
|
||||
"ы": "ꙑ",
|
||||
"ш": "ѱ",
|
||||
"з": "ꙁ",
|
||||
"и": "і",
|
||||
"і": "и",
|
||||
"я": "ꙗ",
|
||||
"е": "ѥ",
|
||||
"ѡ": "ꙍ",
|
||||
"о": "ѻ",
|
||||
"а": "ѣ",
|
||||
"э": "є",
|
||||
"ъ": "ь",
|
||||
"ь": "ъ",
|
||||
"й": "ј",
|
||||
"ꙉ": "ђ",
|
||||
"ч": "ћ",
|
||||
"ҁ": "қ",
|
||||
"қ": "ҁ",
|
||||
"џ": "ҷ",
|
||||
"ҷ": "џ",
|
||||
"ј": "й",
|
||||
"у": "ꙋ",
|
||||
"м": "ѫ",
|
||||
"н": "ѧ",
|
||||
"с": "ѕ",
|
||||
"л": "ԯ",
|
||||
"ԓ": "ԯ",
|
||||
"\ua67d": "\u0483",
|
||||
"\u0487": "\ua66f",
|
||||
"ӈ": "ԩ"
|
||||
}
|
83
srcs/compose/shift.json
Normal file
@ -0,0 +1,83 @@
|
||||
{
|
||||
"↙": "⇙",
|
||||
"↓": "⇓",
|
||||
"↘": "⇘",
|
||||
"←": "⇐",
|
||||
"→": "⇒",
|
||||
"↖": "⇖",
|
||||
"↑": "⇑",
|
||||
"↗": "⇗",
|
||||
"└": "╚",
|
||||
"┴": "╩",
|
||||
"┘": "╝",
|
||||
"├": "╠",
|
||||
"┼": "╬",
|
||||
"┤": "╣",
|
||||
"┌": "╔",
|
||||
"┬": "╦",
|
||||
"┐": "╗",
|
||||
"─": "═",
|
||||
"│": "║",
|
||||
// superscript
|
||||
"ᵃ": "ᴬ",
|
||||
"ᵇ": "ᴮ",
|
||||
"ᶜ": "ꟲ",
|
||||
"ᵈ": "ᴰ",
|
||||
"ᵉ": "ᴱ",
|
||||
"ᶠ": "ꟳ",
|
||||
"ᵍ": "ᴳ",
|
||||
"ʰ": "ᴴ",
|
||||
"ⁱ": "ᴵ",
|
||||
"ʲ": "ᴶ",
|
||||
"ᵏ": "ᴷ",
|
||||
"ˡ": "ᴸ",
|
||||
"ᵐ": "ᴹ",
|
||||
"ⁿ": "ᴺ",
|
||||
"ᵒ": "ᴼ",
|
||||
"ᵖ": "ᴾ",
|
||||
"ʳ": "ᴿ",
|
||||
"ᵗ": "ᵀ",
|
||||
"ᵘ": "ᵁ",
|
||||
"ᵛ": "ⱽ",
|
||||
"ʷ": "ᵂ",
|
||||
"ᶾ": "ᴣ",
|
||||
"ᵠ": "ᶲ",
|
||||
// german eszett has an uppercase, but because it is uncommon, java doesn't know about it
|
||||
"ß": "ẞ",
|
||||
// these characters don't have a preapplied uppercase version, so we use combining characters
|
||||
"ẗ": "T\u0308",
|
||||
"ẘ": "W\u030A",
|
||||
"ẙ": "Y\u030A",
|
||||
"ǰ": "J\u030C",
|
||||
"ȷ": "J\u0307",
|
||||
// In Turkish, upper case of 'iı' is 'İI' but Java's toUpperCase will
|
||||
// return 'II'. To make 'İ' accessible, make it the shift of 'ı'. This
|
||||
// has the inconvenient of swapping i and ı on the keyboard.
|
||||
"ı": "İ",
|
||||
"₹": "₨",
|
||||
// Gujarati alternate characters
|
||||
"અ": "આ",
|
||||
"ઇ": "ઈ",
|
||||
"િ": "ી",
|
||||
"ઉ": "ઊ",
|
||||
"ુ": "ૂ",
|
||||
"એ": "ઐ",
|
||||
"ે": "ૈ",
|
||||
"ઓ": "ઔ",
|
||||
"ો": "ૌ",
|
||||
"ક": "ખ",
|
||||
"ગ": "ઘ",
|
||||
"ચ": "છ",
|
||||
"જ": "ઝ",
|
||||
"ટ": "ઠ",
|
||||
"ડ": "ઢ",
|
||||
"ન": "ણ",
|
||||
"ત": "થ",
|
||||
"દ": "ધ",
|
||||
"પ": "ફ",
|
||||
"બ": "ભ",
|
||||
"મ": "ં",
|
||||
"લ": "ળ",
|
||||
"સ": "શ",
|
||||
"હ": "ઃ"
|
||||
}
|
@ -74,6 +74,9 @@ public final class Autocapitalisation
|
||||
if (_cursor > 0) _cursor--;
|
||||
_should_update_caps_mode = true;
|
||||
break;
|
||||
case KeyEvent.KEYCODE_ENTER:
|
||||
_should_update_caps_mode = true;
|
||||
break;
|
||||
}
|
||||
callback(true);
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ public final class ComposeKey
|
||||
else if (next_header == 0xFFFF) // String final state
|
||||
{
|
||||
int next_length = edges[next];
|
||||
return KeyValue.makeStringKey(
|
||||
return KeyValue.getKeyByName(
|
||||
new String(states, next + 1, next_length - 1));
|
||||
}
|
||||
else // Character final state.
|
||||
|
@ -175,7 +175,7 @@ public final class Config
|
||||
get_dip_pref_oriented(dm, "horizontal_margin", 3, 28);
|
||||
double_tap_lock_shift = _prefs.getBoolean("lock_double_tap", false);
|
||||
characterSize =
|
||||
_prefs.getFloat("character_size", 1.f)
|
||||
_prefs.getFloat("character_size", 1.15f)
|
||||
* characterSizeScale;
|
||||
theme = getThemeId(res, _prefs.getString("theme", ""));
|
||||
autocapitalisation = _prefs.getBoolean("autocapitalisation", true);
|
||||
@ -210,8 +210,7 @@ public final class Config
|
||||
KeyValue action_key()
|
||||
{
|
||||
// Update the name to avoid caching in KeyModifier
|
||||
return (actionLabel == null) ? null :
|
||||
KeyValue.getKeyByName("action").withSymbol(actionLabel);
|
||||
return (actionLabel == null) ? null : KeyValue.makeActionKey(actionLabel);
|
||||
}
|
||||
|
||||
/** Update the layout according to the configuration.
|
||||
@ -302,10 +301,10 @@ public final class Config
|
||||
});
|
||||
if (show_numpad)
|
||||
kw = kw.addNumPad(modify_numpad(num_pad, kw));
|
||||
if (added_number_row != null)
|
||||
kw = kw.insert_row(added_number_row, 0);
|
||||
if (extra_keys.size() > 0)
|
||||
kw = kw.addExtraKeys(extra_keys.entrySet().iterator());
|
||||
if (added_number_row != null)
|
||||
kw = kw.insert_row(added_number_row, 0);
|
||||
return kw;
|
||||
}
|
||||
|
||||
@ -422,6 +421,7 @@ public final class Config
|
||||
if ((night_mode & Configuration.UI_MODE_NIGHT_NO) != 0)
|
||||
return R.style.MonetLight;
|
||||
return R.style.MonetDark;
|
||||
case "rosepine": return R.style.RosePine;
|
||||
default:
|
||||
case "system":
|
||||
if ((night_mode & Configuration.UI_MODE_NIGHT_NO) != 0)
|
||||
|
@ -60,10 +60,10 @@ public final class KeyEventHandler
|
||||
{
|
||||
if (key == null)
|
||||
return;
|
||||
// Stop auto capitalisation when pressing some keys
|
||||
switch (key.getKind())
|
||||
{
|
||||
case Modifier:
|
||||
// Stop auto capitalisation when activating a system modifier
|
||||
switch (key.getModifier())
|
||||
{
|
||||
case CTRL:
|
||||
@ -73,6 +73,9 @@ public final class KeyEventHandler
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case Compose_pending:
|
||||
_autocap.stop();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
@ -97,6 +100,7 @@ public final class KeyEventHandler
|
||||
_recv.set_compose_pending(true);
|
||||
break;
|
||||
case Cursor_move: move_cursor(key.getCursorMove()); break;
|
||||
case Complex: send_complex_key(key.getComplexKind(), key.getComplex()); break;
|
||||
}
|
||||
update_meta_state(old_mods);
|
||||
}
|
||||
@ -215,6 +219,16 @@ public final class KeyEventHandler
|
||||
conn.performContextMenuAction(id);
|
||||
}
|
||||
|
||||
void send_complex_key(KeyValue.Complex.Kind kind, KeyValue.Complex val)
|
||||
{
|
||||
switch (kind)
|
||||
{
|
||||
case StringWithSymbol:
|
||||
send_text(((KeyValue.Complex.StringWithSymbol)val).str);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("InlinedApi")
|
||||
void handle_editing_key(KeyValue.Editing ev)
|
||||
{
|
||||
|
@ -182,9 +182,10 @@ public final class KeyModifier
|
||||
{
|
||||
case Char:
|
||||
char kc = k.getChar();
|
||||
char c = map_char_shift(kc);
|
||||
if (kc == c)
|
||||
c = Character.toUpperCase(kc);
|
||||
KeyValue r = ComposeKey.apply(ComposeKeyData.shift, kc);
|
||||
if (r != null)
|
||||
return r;
|
||||
char c = Character.toUpperCase(kc);
|
||||
return (kc == c) ? k : k.withChar(c);
|
||||
case String:
|
||||
String s = Utils.capitalize_string(k.getString());
|
||||
@ -204,11 +205,12 @@ public final class KeyModifier
|
||||
String name = null;
|
||||
switch (k.getKind())
|
||||
{
|
||||
case Char: name = apply_fn_char(k.getChar()); break;
|
||||
case Char:
|
||||
KeyValue r = ComposeKey.apply(ComposeKeyData.fn, k.getChar());
|
||||
return (r != null) ? r : k;
|
||||
case Keyevent: name = apply_fn_keyevent(k.getKeyevent()); break;
|
||||
case Event: name = apply_fn_event(k.getEvent()); break;
|
||||
case Placeholder: name = apply_fn_placeholder(k.getPlaceholder()); break;
|
||||
case Cursor_move: name = apply_fn_cursormove(k.getCursorMove()); break;
|
||||
}
|
||||
return (name == null) ? k : KeyValue.getKeyByName(name);
|
||||
}
|
||||
@ -254,203 +256,6 @@ public final class KeyModifier
|
||||
}
|
||||
}
|
||||
|
||||
private static String apply_fn_cursormove(short cur)
|
||||
{
|
||||
switch (cur)
|
||||
{
|
||||
case -1 : return "home"; // cursor_left
|
||||
case 1 : return "end"; // cursor_right
|
||||
default: return null;
|
||||
}
|
||||
}
|
||||
|
||||
/** Return the name of modified key, or [null]. */
|
||||
private static String apply_fn_char(char c)
|
||||
{
|
||||
switch (c)
|
||||
{
|
||||
case '1': return "f1";
|
||||
case '2': return "f2";
|
||||
case '3': return "f3";
|
||||
case '4': return "f4";
|
||||
case '5': return "f5";
|
||||
case '6': return "f6";
|
||||
case '7': return "f7";
|
||||
case '8': return "f8";
|
||||
case '9': return "f9";
|
||||
case '0': return "f10";
|
||||
case '<': return "«";
|
||||
case '>': return "»";
|
||||
case '{': return "‹";
|
||||
case '}': return "›";
|
||||
case '[': return "‘";
|
||||
case ']': return "’";
|
||||
case '(': return "“";
|
||||
case ')': return "”";
|
||||
case '\'': return "‚";
|
||||
case '"': return "„";
|
||||
case '-': return "–";
|
||||
case '_': return "—";
|
||||
case '^': return "¬";
|
||||
case '%': return "‰";
|
||||
case '=': return "≈";
|
||||
case 'u': return "µ";
|
||||
case 'a': return "æ";
|
||||
case 'o': return "œ";
|
||||
case '*': return "°";
|
||||
case '.': return "…";
|
||||
case ',': return "·";
|
||||
case '!': return "¡";
|
||||
case '?': return "¿";
|
||||
case '|': return "¦";
|
||||
case '§': return "¶";
|
||||
case '†': return "‡";
|
||||
case '×': return "∙";
|
||||
case ' ': return "nbsp";
|
||||
// arrows
|
||||
case '↖': return "⇖";
|
||||
case '↑': return "⇑";
|
||||
case '↗': return "⇗";
|
||||
case '←': return "⇐";
|
||||
case '→': return "⇒";
|
||||
case '↙': return "⇙";
|
||||
case '↓': return "⇓";
|
||||
case '↘': return "⇘";
|
||||
case '↔': return "⇔";
|
||||
case '↕': return "⇕";
|
||||
// Currency symbols
|
||||
case 'e': return "€";
|
||||
case 'l': return "£";
|
||||
case 'r': return "₹";
|
||||
case 'y': return "¥";
|
||||
case 'c': return "¢";
|
||||
case 'p': return "₽";
|
||||
case 'b': return "₱";
|
||||
case 'h': return "₴";
|
||||
case 'z': return "₿";
|
||||
case '€': case '£': return "removed"; // Avoid showing these twice
|
||||
// alternating greek letters
|
||||
case 'π': return "ϖ";
|
||||
case 'θ': return "ϑ";
|
||||
case 'Θ': return "ϴ";
|
||||
case 'ε': return "ϵ";
|
||||
case 'β': return "ϐ";
|
||||
case 'ρ': return "ϱ";
|
||||
case 'σ': return "ς";
|
||||
case 'γ': return "ɣ";
|
||||
case 'φ': return "ϕ";
|
||||
case 'υ': return "ϒ";
|
||||
case 'κ': return "ϰ";
|
||||
// alternating math characters
|
||||
case '∪': return "⋃";
|
||||
case '∩': return "⋂";
|
||||
case '∃': return "∄";
|
||||
case '∈': return "∉";
|
||||
case '∫': return "∮";
|
||||
case 'Π': return "∏";
|
||||
case 'Σ': return "∑";
|
||||
case '∨': return "⋁";
|
||||
case '∧': return "⋀";
|
||||
case '⊷': return "⊶";
|
||||
case '⊂': return "⊆";
|
||||
case '⊃': return "⊇";
|
||||
case '±': return "∓";
|
||||
// hebrew niqqud
|
||||
case 'ק': return "qamats"; // kamatz
|
||||
case 'ר': return "hataf_qamats"; // reduced kamatz
|
||||
case 'ו': return "holam";
|
||||
case 'ם': return "rafe";
|
||||
case 'פ': return "patah"; // patach
|
||||
case 'ש': return "sheva";
|
||||
case 'ד': return "dagesh"; // or mapiq
|
||||
case 'ח': return "hiriq";
|
||||
case 'ף': return "hataf_patah"; // reduced patach
|
||||
case 'ז': return "qubuts"; // kubuts
|
||||
case 'ס': return "segol";
|
||||
case 'ב': return "hataf_segol"; // reduced segol
|
||||
case 'צ': return "tsere";
|
||||
// Devanagari symbols
|
||||
case 'ए': return "ऍ";
|
||||
case 'े': return "ॅ";
|
||||
case 'ऐ': return "ऎ";
|
||||
case 'ै': return "ॆ";
|
||||
case 'ऋ': return "ॠ";
|
||||
case 'ृ': return "ॄ";
|
||||
case 'ळ': return "ऴ";
|
||||
case 'र': return "ऱ";
|
||||
case 'क': return "क़";
|
||||
case 'ख': return "ख़";
|
||||
case 'ग': return "ग़";
|
||||
case 'घ': return "ॻ";
|
||||
case 'ढ': return "ढ़";
|
||||
case 'न': return "ऩ";
|
||||
case 'ड': return "ड़";
|
||||
case 'ट': return "ॸ";
|
||||
case 'ण': return "ॾ";
|
||||
case 'फ': return "फ़";
|
||||
case 'ऌ': return "ॡ";
|
||||
case 'ॢ': return "ॣ";
|
||||
case 'औ': return "ॵ";
|
||||
case 'ौ': return "ॏ";
|
||||
case 'ओ': return "ऒ";
|
||||
case 'ो': return "ॊ";
|
||||
case 'च': return "ॼ";
|
||||
case 'ज': return "ज़";
|
||||
case 'ब': return "ॿ";
|
||||
case 'व': return "ॺ";
|
||||
case 'य': return "य़";
|
||||
case 'अ': return "ॲ";
|
||||
case 'आ': return "ऑ";
|
||||
case 'ा': return "ॉ";
|
||||
case 'झ': return "ॹ";
|
||||
case 'ई': return "ॴ";
|
||||
case 'ी': return "ऻ";
|
||||
case 'इ': return "ॳ";
|
||||
case 'ि': return "ऺ";
|
||||
case 'उ': return "ॶ";
|
||||
case 'ऊ': return "ॷ";
|
||||
case 'ु': return "ऄ";
|
||||
case 'ष': return "क्ष";
|
||||
case 'थ': return "त्र";
|
||||
case 'द': return "द्र";
|
||||
case 'प': return "प्र";
|
||||
case 'श': return "श्र";
|
||||
case 'छ': return "श्च";
|
||||
case 'ँ': return "ऀ";
|
||||
case '₹': return "₨";
|
||||
case 'ॖ': return "ॗ";
|
||||
case '॓': return "॔";
|
||||
case '॰': return "ॱ";
|
||||
case '।': return "॥";
|
||||
case 'ं': return "ॕ";
|
||||
case '़': return "ॎ";
|
||||
case 'ऽ': return "ॽ";
|
||||
// Persian numbers
|
||||
case '۱': return "f1";
|
||||
case '۲': return "f2";
|
||||
case '۳': return "f3";
|
||||
case '۴': return "f4";
|
||||
case '۵': return "f5";
|
||||
case '۶': return "f6";
|
||||
case '۷': return "f7";
|
||||
case '۸': return "f8";
|
||||
case '۹': return "f9";
|
||||
case '۰': return "f10";
|
||||
// Arabic numbers
|
||||
case '١': return "f1";
|
||||
case '٢': return "f2";
|
||||
case '٣': return "f3";
|
||||
case '٤': return "f4";
|
||||
case '٥': return "f5";
|
||||
case '٦': return "f6";
|
||||
case '٧': return "f7";
|
||||
case '٨': return "f8";
|
||||
case '٩': return "f9";
|
||||
case '٠': return "f10";
|
||||
default: return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static KeyValue apply_ctrl(KeyValue k)
|
||||
{
|
||||
if (_modmap != null)
|
||||
@ -551,64 +356,6 @@ public final class KeyModifier
|
||||
public String apply(char _c) { return null; }
|
||||
};
|
||||
|
||||
private static char map_char_shift(char c)
|
||||
{
|
||||
switch (c)
|
||||
{
|
||||
case '↙': return '⇙';
|
||||
case '↓': return '⇓';
|
||||
case '↘': return '⇘';
|
||||
case '←': return '⇐';
|
||||
case '→': return '⇒';
|
||||
case '↖': return '⇖';
|
||||
case '↑': return '⇑';
|
||||
case '↗': return '⇗';
|
||||
case '└': return '╚';
|
||||
case '┴': return '╩';
|
||||
case '┘': return '╝';
|
||||
case '├': return '╠';
|
||||
case '┼': return '╬';
|
||||
case '┤': return '╣';
|
||||
case '┌': return '╔';
|
||||
case '┬': return '╦';
|
||||
case '┐': return '╗';
|
||||
case '─': return '═';
|
||||
case '│': return '║';
|
||||
case 'ß': return 'ẞ';
|
||||
/* In Turkish, upper case of 'iı' is 'İI' but Java's toUpperCase will
|
||||
return 'II'. To make 'İ' accessible, make it the shift of 'ı'. This
|
||||
has the inconvenient of swapping i and ı on the keyboard. */
|
||||
case 'ı': return 'İ';
|
||||
case '₹': return '₨';
|
||||
// Gujarati alternate characters
|
||||
case 'અ': return 'આ';
|
||||
case 'ઇ': return 'ઈ';
|
||||
case 'િ': return 'ી';
|
||||
case 'ઉ': return 'ઊ';
|
||||
case 'ુ': return 'ૂ';
|
||||
case 'એ': return 'ઐ';
|
||||
case 'ે': return 'ૈ';
|
||||
case 'ઓ': return 'ઔ';
|
||||
case 'ો': return 'ૌ';
|
||||
case 'ક': return 'ખ';
|
||||
case 'ગ': return 'ઘ';
|
||||
case 'ચ': return 'છ';
|
||||
case 'જ': return 'ઝ';
|
||||
case 'ટ': return 'ઠ';
|
||||
case 'ડ': return 'ઢ';
|
||||
case 'ન': return 'ણ';
|
||||
case 'ત': return 'થ';
|
||||
case 'દ': return 'ધ';
|
||||
case 'પ': return 'ફ';
|
||||
case 'બ': return 'ભ';
|
||||
case 'મ': return 'ં';
|
||||
case 'લ': return 'ળ';
|
||||
case 'સ': return 'શ';
|
||||
case 'હ': return 'ઃ';
|
||||
default: return c;
|
||||
}
|
||||
}
|
||||
|
||||
private static final Map_char map_char_arrow_right =
|
||||
new Map_char() {
|
||||
public String apply(char c)
|
||||
|
@ -91,7 +91,8 @@ public final class KeyValue implements Comparable<KeyValue>
|
||||
{
|
||||
Char, String, Keyevent, Event, Compose_pending, Hangul_initial,
|
||||
Hangul_medial, Modifier, Editing, Placeholder,
|
||||
Cursor_move // Value is encoded as a 16-bit integer
|
||||
Cursor_move, // Value is encoded as a 16-bit integer.
|
||||
Complex, // [_payload] is a [KeyValue.Complex], value is [Complex.Kind].
|
||||
}
|
||||
|
||||
private static final int FLAGS_OFFSET = 19;
|
||||
@ -129,7 +130,13 @@ public final class KeyValue implements Comparable<KeyValue>
|
||||
check((((Kind.values().length - 1) << KIND_OFFSET) & ~KIND_BITS) == 0);
|
||||
}
|
||||
|
||||
private final String _symbol;
|
||||
/**
|
||||
* The symbol that is rendered on the keyboard as a [String].
|
||||
* Except for keys of kind:
|
||||
* - [String], this is also the string to output.
|
||||
* - [Complex], this is an instance of [KeyValue.Complex].
|
||||
*/
|
||||
private final Object _payload;
|
||||
|
||||
/** This field encodes three things: Kind, flags and value. */
|
||||
private final int _code;
|
||||
@ -153,7 +160,9 @@ public final class KeyValue implements Comparable<KeyValue>
|
||||
When [getKind() == Kind.String], also the string to send. */
|
||||
public String getString()
|
||||
{
|
||||
return _symbol;
|
||||
if (getKind() == Kind.Complex)
|
||||
return ((Complex)_payload).getSymbol();
|
||||
return (String)_payload;
|
||||
}
|
||||
|
||||
/** Defined only when [getKind() == Kind.Char]. */
|
||||
@ -211,25 +220,32 @@ public final class KeyValue implements Comparable<KeyValue>
|
||||
return (short)(_code & VALUE_BITS);
|
||||
}
|
||||
|
||||
/** Defined only when [getKind() == Kind.Complex]. */
|
||||
public Complex getComplex()
|
||||
{
|
||||
return (Complex)_payload;
|
||||
}
|
||||
|
||||
/** Defined only when [getKind() == Kind.Complex]. */
|
||||
public Complex.Kind getComplexKind()
|
||||
{
|
||||
return Complex.Kind.values()[(_code & VALUE_BITS)];
|
||||
}
|
||||
|
||||
/* Update the char and the symbol. */
|
||||
public KeyValue withChar(char c)
|
||||
{
|
||||
return new KeyValue(String.valueOf(c), Kind.Char, c, getFlags());
|
||||
}
|
||||
|
||||
public KeyValue withSymbol(String s)
|
||||
{
|
||||
return new KeyValue(s, (_code & KIND_BITS), (_code & VALUE_BITS), getFlags());
|
||||
}
|
||||
|
||||
public KeyValue withKeyevent(int code)
|
||||
{
|
||||
return new KeyValue(_symbol, Kind.Keyevent, code, getFlags());
|
||||
return new KeyValue(getString(), Kind.Keyevent, code, getFlags());
|
||||
}
|
||||
|
||||
public KeyValue withFlags(int f)
|
||||
{
|
||||
return new KeyValue(_symbol, (_code & KIND_BITS), (_code & VALUE_BITS), f);
|
||||
return new KeyValue(_payload, (_code & KIND_BITS), (_code & VALUE_BITS), f);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -247,7 +263,9 @@ public final class KeyValue implements Comparable<KeyValue>
|
||||
d = _code - snd._code;
|
||||
if (d != 0)
|
||||
return d;
|
||||
return _symbol.compareTo(snd._symbol);
|
||||
if (getKind() == Kind.Complex)
|
||||
return ((Complex)_payload).compareTo((Complex)snd._payload);
|
||||
return ((String)_payload).compareTo((String)snd._payload);
|
||||
}
|
||||
|
||||
/** Type-safe alternative to [equals]. */
|
||||
@ -255,24 +273,36 @@ public final class KeyValue implements Comparable<KeyValue>
|
||||
{
|
||||
if (snd == null)
|
||||
return false;
|
||||
return _symbol.equals(snd._symbol) && _code == snd._code;
|
||||
return _code == snd._code && _payload.equals(snd._payload);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
return _symbol.hashCode() + _code;
|
||||
return _payload.hashCode() + _code;
|
||||
}
|
||||
|
||||
public KeyValue(String s, int kind, int value, int flags)
|
||||
public String toString()
|
||||
{
|
||||
_symbol = s;
|
||||
int value = _code & VALUE_BITS;
|
||||
return "[KeyValue " + getKind().toString() + "+" + getFlags() + "+" + value + " \"" + getString() + "\"]";
|
||||
}
|
||||
|
||||
private KeyValue(Object p, int kind, int value, int flags)
|
||||
{
|
||||
_payload = p;
|
||||
_code = (kind & KIND_BITS) | (flags & FLAGS_BITS) | (value & VALUE_BITS);
|
||||
}
|
||||
|
||||
public KeyValue(String s, Kind k, int v, int f)
|
||||
public KeyValue(Complex p, Complex.Kind value, int flags)
|
||||
{
|
||||
this(s, (k.ordinal() << KIND_OFFSET), v, f);
|
||||
this((Object)p, (Kind.Complex.ordinal() << KIND_OFFSET), value.ordinal(),
|
||||
flags);
|
||||
}
|
||||
|
||||
public KeyValue(String p, Kind k, int v, int f)
|
||||
{
|
||||
this(p, (k.ordinal() << KIND_OFFSET), v, f);
|
||||
}
|
||||
|
||||
private static KeyValue charKey(String symbol, char c, int flags)
|
||||
@ -363,7 +393,19 @@ public final class KeyValue implements Comparable<KeyValue>
|
||||
|
||||
public static KeyValue makeCharKey(char c)
|
||||
{
|
||||
return new KeyValue(String.valueOf(c), Kind.Char, c, 0);
|
||||
return makeCharKey(c, null, 0);
|
||||
}
|
||||
|
||||
public static KeyValue makeCharKey(char c, String symbol, int flags)
|
||||
{
|
||||
if (symbol == null)
|
||||
symbol = String.valueOf(c);
|
||||
return new KeyValue(symbol, Kind.Char, c, flags);
|
||||
}
|
||||
|
||||
public static KeyValue makeCharKey(int symbol, char c, int flags)
|
||||
{
|
||||
return makeCharKey(c, String.valueOf((char)symbol), flags | FLAG_KEY_FONT);
|
||||
}
|
||||
|
||||
public static KeyValue makeComposePending(String symbol, int state, int flags)
|
||||
@ -397,6 +439,11 @@ public final class KeyValue implements Comparable<KeyValue>
|
||||
return KeyValue.makeCharKey((char)precomposed);
|
||||
}
|
||||
|
||||
public static KeyValue makeActionKey(String symbol)
|
||||
{
|
||||
return eventKey(symbol, Event.ACTION, FLAG_SMALLER_FONT);
|
||||
}
|
||||
|
||||
/** Make a key that types a string. A char key is returned for a string of
|
||||
length 1. */
|
||||
public static KeyValue makeStringKey(String str, int flags)
|
||||
@ -407,12 +454,36 @@ public final class KeyValue implements Comparable<KeyValue>
|
||||
return new KeyValue(str, Kind.String, 0, flags | FLAG_SMALLER_FONT);
|
||||
}
|
||||
|
||||
public static KeyValue makeStringKeyWithSymbol(String str, String symbol, int flags)
|
||||
{
|
||||
return new KeyValue(new Complex.StringWithSymbol(str, symbol),
|
||||
Complex.Kind.StringWithSymbol, flags);
|
||||
}
|
||||
|
||||
/** Make a modifier key for passing to [KeyModifier]. */
|
||||
public static KeyValue makeInternalModifier(Modifier mod)
|
||||
{
|
||||
return new KeyValue("", Kind.Modifier, mod.ordinal(), 0);
|
||||
}
|
||||
|
||||
public static KeyValue parseKeyDefinition(String str)
|
||||
{
|
||||
if (str.length() < 2 || str.charAt(0) != ':')
|
||||
return makeStringKey(str);
|
||||
try
|
||||
{
|
||||
return KeyValueParser.parse(str);
|
||||
}
|
||||
catch (KeyValueParser.ParseError _e)
|
||||
{
|
||||
return makeStringKey(str);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a key by its name. If the given name doesn't correspond to a key
|
||||
* defined in this function, it is passed to [parseStringKey] as a fallback.
|
||||
*/
|
||||
public static KeyValue getKeyByName(String name)
|
||||
{
|
||||
switch (name)
|
||||
@ -456,6 +527,38 @@ public final class KeyValue implements Comparable<KeyValue>
|
||||
case "fn": return modifierKey("Fn", Modifier.FN, 0);
|
||||
case "meta": return modifierKey("Meta", Modifier.META, 0);
|
||||
|
||||
/* Combining diacritics */
|
||||
/* Glyphs is the corresponding dead-key + 0x0100. */
|
||||
case "combining_dot_above": return makeCharKey(0xE15A, '\u0307', 0);
|
||||
case "combining_double_aigu": return makeCharKey(0xE15B, '\u030B', 0);
|
||||
case "combining_slash": return makeCharKey(0xE15C, '\u0337', 0);
|
||||
case "combining_arrow_right": return makeCharKey(0xE15D, '\u20D7', 0);
|
||||
case "combining_breve": return makeCharKey(0xE15E, '\u0306', 0);
|
||||
case "combining_bar": return makeCharKey(0xE15F, '\u0335', 0);
|
||||
case "combining_aigu": return makeCharKey(0xE150, '\u0301', 0);
|
||||
case "combining_caron": return makeCharKey(0xE151, '\u030C', 0);
|
||||
case "combining_cedille": return makeCharKey(0xE152, '\u0327', 0);
|
||||
case "combining_circonflexe": return makeCharKey(0xE153, '\u0302', 0);
|
||||
case "combining_grave": return makeCharKey(0xE154, '\u0300', 0);
|
||||
case "combining_macron": return makeCharKey(0xE155, '\u0304', 0);
|
||||
case "combining_ring": return makeCharKey(0xE156, '\u030A', 0);
|
||||
case "combining_tilde": return makeCharKey(0xE157, '\u0303', 0);
|
||||
case "combining_trema": return makeCharKey(0xE158, '\u0308', 0);
|
||||
case "combining_ogonek": return makeCharKey(0xE159, '\u0328', 0);
|
||||
case "combining_dot_below": return makeCharKey(0xE160, '\u0323', 0);
|
||||
case "combining_horn": return makeCharKey(0xE161, '\u031B', 0);
|
||||
case "combining_hook_above": return makeCharKey(0xE162, '\u0309', 0);
|
||||
/* Combining diacritics that do not have a corresponding dead keys start
|
||||
at 0xE200. */
|
||||
case "combining_vertical_tilde": return makeCharKey(0xE200, '\u033E', 0);
|
||||
case "combining_inverted_breve": return makeCharKey(0xE201, '\u0311', 0);
|
||||
case "combining_pokrytie": return makeCharKey(0xE202, '\u0487', 0);
|
||||
case "combining_slavonic_psili": return makeCharKey(0xE203, '\u0486', 0);
|
||||
case "combining_slavonic_dasia": return makeCharKey(0xE204, '\u0485', 0);
|
||||
case "combining_payerok": return makeCharKey(0xE205, '\uA67D', 0);
|
||||
case "combining_titlo": return makeCharKey(0xE206, '\u0483', 0);
|
||||
case "combining_vzmet": return makeCharKey(0xE207, '\uA66F', 0);
|
||||
|
||||
/* Special event keys */
|
||||
case "config": return eventKey(0xE004, Event.CONFIG, FLAG_SMALLER_FONT);
|
||||
case "switch_text": return eventKey("ABC", Event.SWITCH_TEXT, FLAG_SMALLER_FONT);
|
||||
@ -483,8 +586,8 @@ public final class KeyValue implements Comparable<KeyValue>
|
||||
case "left": return keyeventKey(0xE008, KeyEvent.KEYCODE_DPAD_LEFT, 0);
|
||||
case "page_up": return keyeventKey(0xE002, KeyEvent.KEYCODE_PAGE_UP, 0);
|
||||
case "page_down": return keyeventKey(0xE003, KeyEvent.KEYCODE_PAGE_DOWN, 0);
|
||||
case "home": return keyeventKey(0xE00B, KeyEvent.KEYCODE_MOVE_HOME, 0);
|
||||
case "end": return keyeventKey(0xE00C, KeyEvent.KEYCODE_MOVE_END, 0);
|
||||
case "home": return keyeventKey(0xE00B, KeyEvent.KEYCODE_MOVE_HOME, FLAG_SMALLER_FONT);
|
||||
case "end": return keyeventKey(0xE00C, KeyEvent.KEYCODE_MOVE_END, FLAG_SMALLER_FONT);
|
||||
case "backspace": return keyeventKey(0xE011, KeyEvent.KEYCODE_DEL, 0);
|
||||
case "delete": return keyeventKey(0xE010, KeyEvent.KEYCODE_FORWARD_DEL, 0);
|
||||
case "insert": return keyeventKey("Ins", KeyEvent.KEYCODE_INSERT, FLAG_SMALLER_FONT);
|
||||
@ -502,6 +605,7 @@ public final class KeyValue implements Comparable<KeyValue>
|
||||
case "f12": return keyeventKey("F12", KeyEvent.KEYCODE_F12, FLAG_SMALLER_FONT);
|
||||
case "tab": return keyeventKey(0xE00F, KeyEvent.KEYCODE_TAB, FLAG_SMALLER_FONT);
|
||||
case "menu": return keyeventKey("Menu", KeyEvent.KEYCODE_MENU, FLAG_SMALLER_FONT);
|
||||
case "scroll_lock": return keyeventKey("Scrl", KeyEvent.KEYCODE_SCROLL_LOCK, FLAG_SMALLER_FONT);
|
||||
|
||||
/* Spaces */
|
||||
case "\\t": return charKey("\\t", '\t', 0); // Send the tab character
|
||||
@ -599,8 +703,8 @@ public final class KeyValue implements Comparable<KeyValue>
|
||||
case "ㅍ": return makeHangulInitial("ㅍ", 17);
|
||||
case "ㅎ": return makeHangulInitial("ㅎ", 18);
|
||||
|
||||
/* Fallback to a string key that types its name */
|
||||
default: return makeStringKey(name);
|
||||
/* The key is not one of the special ones. */
|
||||
default: return parseKeyDefinition(name);
|
||||
}
|
||||
}
|
||||
|
||||
@ -610,4 +714,49 @@ public final class KeyValue implements Comparable<KeyValue>
|
||||
if (!b)
|
||||
throw new RuntimeException("Assertion failure");
|
||||
}
|
||||
|
||||
public static abstract class Complex
|
||||
{
|
||||
public abstract String getSymbol();
|
||||
|
||||
/** [compareTo] can assume that [snd] is an instance of the same class. */
|
||||
public abstract int compareTo(Complex snd);
|
||||
|
||||
public boolean equals(Object snd)
|
||||
{
|
||||
if (snd instanceof Complex)
|
||||
return compareTo((Complex)snd) == 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
/** [hashCode] will be called on this class. */
|
||||
|
||||
/** The kind is stored in the [value] field of the key. */
|
||||
public static enum Kind
|
||||
{
|
||||
StringWithSymbol,
|
||||
}
|
||||
|
||||
public static final class StringWithSymbol extends Complex
|
||||
{
|
||||
public final String str;
|
||||
private final String _symbol;
|
||||
|
||||
public StringWithSymbol(String _str, String _sym)
|
||||
{
|
||||
str = _str;
|
||||
_symbol = _sym;
|
||||
}
|
||||
|
||||
public String getSymbol() { return _symbol; }
|
||||
|
||||
public int compareTo(Complex _snd)
|
||||
{
|
||||
StringWithSymbol snd = (StringWithSymbol)_snd;
|
||||
int d = str.compareTo(snd.str);
|
||||
if (d != 0) return d;
|
||||
return _symbol.compareTo(snd._symbol);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
148
srcs/juloo.keyboard2/KeyValueParser.java
Normal file
@ -0,0 +1,148 @@
|
||||
package juloo.keyboard2;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
Parse a key definition. The syntax for a key definition is:
|
||||
- [:(kind) (attributes):(payload)].
|
||||
- If [str] doesn't start with a [:] character, it is interpreted as an
|
||||
arbitrary string key.
|
||||
|
||||
For the different kinds and attributes, see doc/Possible-key-values.md.
|
||||
|
||||
Examples:
|
||||
- [:str flags=dim,small symbol='MyKey':'My arbitrary string'].
|
||||
- [:str:'My arbitrary string'].
|
||||
|
||||
*/
|
||||
public final class KeyValueParser
|
||||
{
|
||||
static Pattern START_PAT;
|
||||
static Pattern ATTR_PAT;
|
||||
static Pattern QUOTED_PAT;
|
||||
static Pattern PAYLOAD_START_PAT;
|
||||
static Pattern SINGLE_CHAR_PAT;
|
||||
|
||||
static public KeyValue parse(String str) throws ParseError
|
||||
{
|
||||
String symbol = null;
|
||||
int flags = 0;
|
||||
init();
|
||||
// Kind
|
||||
Matcher m = START_PAT.matcher(str);
|
||||
if (!m.lookingAt())
|
||||
parseError("Expected kind, for example \":str ...\".", m);
|
||||
String kind = m.group(1);
|
||||
// Attributes
|
||||
while (true)
|
||||
{
|
||||
if (!match(m, ATTR_PAT))
|
||||
break;
|
||||
String attr_name = m.group(1);
|
||||
String attr_value = parseSingleQuotedString(m);
|
||||
switch (attr_name)
|
||||
{
|
||||
case "flags":
|
||||
flags = parseFlags(attr_value, m);
|
||||
break;
|
||||
case "symbol":
|
||||
symbol = attr_value;
|
||||
break;
|
||||
|
||||
default:
|
||||
parseError("Unknown attribute "+attr_name, m);
|
||||
}
|
||||
}
|
||||
// Payload
|
||||
if (!match(m, PAYLOAD_START_PAT))
|
||||
parseError("Unexpected character", m);
|
||||
switch (kind)
|
||||
{
|
||||
case "str":
|
||||
String str_payload = parseSingleQuotedString(m);
|
||||
if (symbol == null)
|
||||
return KeyValue.makeStringKey(str_payload, flags);
|
||||
return KeyValue.makeStringKeyWithSymbol(str_payload, symbol, flags);
|
||||
|
||||
case "char":
|
||||
char char_payload = parseOneChar(m);
|
||||
return KeyValue.makeCharKey(char_payload, symbol, flags);
|
||||
default: break;
|
||||
}
|
||||
parseError("Unknown kind '"+kind+"'", m, 1);
|
||||
return null; // Unreachable
|
||||
}
|
||||
|
||||
static String parseSingleQuotedString(Matcher m) throws ParseError
|
||||
{
|
||||
if (!match(m, QUOTED_PAT))
|
||||
parseError("Expected quoted string", m);
|
||||
return m.group(1).replace("\\'", "'");
|
||||
}
|
||||
|
||||
static char parseOneChar(Matcher m) throws ParseError
|
||||
{
|
||||
if (!match(m, SINGLE_CHAR_PAT))
|
||||
parseError("Expected a character", m);
|
||||
return m.group(0).charAt(0);
|
||||
}
|
||||
|
||||
static int parseFlags(String s, Matcher m) throws ParseError
|
||||
{
|
||||
int flags = 0;
|
||||
for (String f : s.split(","))
|
||||
{
|
||||
switch (f)
|
||||
{
|
||||
case "dim": flags |= KeyValue.FLAG_SECONDARY; break;
|
||||
case "small": flags |= KeyValue.FLAG_SMALLER_FONT; break;
|
||||
default: parseError("Unknown flag "+f, m);
|
||||
}
|
||||
}
|
||||
return flags;
|
||||
}
|
||||
|
||||
static boolean match(Matcher m, Pattern pat)
|
||||
{
|
||||
try { m.region(m.end(), m.regionEnd()); } catch (Exception _e) {}
|
||||
m.usePattern(pat);
|
||||
return m.lookingAt();
|
||||
}
|
||||
|
||||
static void init()
|
||||
{
|
||||
if (START_PAT != null)
|
||||
return;
|
||||
START_PAT = Pattern.compile(":(\\w+)");
|
||||
ATTR_PAT = Pattern.compile("\\s*(\\w+)\\s*=");
|
||||
QUOTED_PAT = Pattern.compile("'(([^'\\\\]+|\\\\')*)'");
|
||||
PAYLOAD_START_PAT = Pattern.compile("\\s*:");
|
||||
SINGLE_CHAR_PAT = Pattern.compile(".");
|
||||
}
|
||||
|
||||
static void parseError(String msg, Matcher m) throws ParseError
|
||||
{
|
||||
parseError(msg, m, m.regionStart());
|
||||
}
|
||||
|
||||
static void parseError(String msg, Matcher m, int i) throws ParseError
|
||||
{
|
||||
StringBuilder msg_ = new StringBuilder("Syntax error");
|
||||
try
|
||||
{
|
||||
char c = m.group(0).charAt(0);
|
||||
msg_.append(" at character '").append(c).append("'");
|
||||
} catch (IllegalStateException _e) {}
|
||||
msg_.append(" at position ");
|
||||
msg_.append(i);
|
||||
msg_.append(": ");
|
||||
msg_.append(msg);
|
||||
throw new ParseError(msg_.toString());
|
||||
}
|
||||
|
||||
public static class ParseError extends Exception
|
||||
{
|
||||
public ParseError(String msg) { super(msg); }
|
||||
};
|
||||
}
|
@ -193,21 +193,22 @@ public final class KeyboardData
|
||||
/** Load a layout from a resource ID. Returns [null] on error. */
|
||||
public static KeyboardData load(Resources res, int id)
|
||||
{
|
||||
KeyboardData l = _layoutCache.get(id);
|
||||
if (l == null)
|
||||
{
|
||||
if (_layoutCache.containsKey(id))
|
||||
return _layoutCache.get(id);
|
||||
KeyboardData l = null;
|
||||
XmlResourceParser parser = null;
|
||||
try
|
||||
{
|
||||
XmlResourceParser parser = res.getXml(id);
|
||||
parser = res.getXml(id);
|
||||
l = parse_keyboard(parser);
|
||||
parser.close();
|
||||
_layoutCache.put(id, l);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
Logs.exn("Failed to load layout id " + id, e);
|
||||
}
|
||||
if (parser != null)
|
||||
parser.close();
|
||||
_layoutCache.put(id, l);
|
||||
return l;
|
||||
}
|
||||
|
||||
|
@ -3,11 +3,14 @@ package juloo.keyboard2;
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.Animatable;
|
||||
import android.media.AudioManager;
|
||||
import android.media.MediaPlayer;
|
||||
import android.net.Uri;
|
||||
import android.os.Build.VERSION;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.provider.Settings;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.Menu;
|
||||
@ -15,28 +18,49 @@ import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.VideoView;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class LauncherActivity extends Activity
|
||||
public class LauncherActivity extends Activity implements Handler.Callback
|
||||
{
|
||||
/** Text is replaced when receiving key events. */
|
||||
VideoView _intro_video;
|
||||
TextView _tryhere_text;
|
||||
EditText _tryhere_area;
|
||||
/** Periodically restart the animations. */
|
||||
List<Animatable> _animations;
|
||||
Handler _handler;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.launcher_activity);
|
||||
_intro_video = (VideoView)findViewById(R.id.launcher_intro_video);
|
||||
_tryhere_text = (TextView)findViewById(R.id.launcher_tryhere_text);
|
||||
_tryhere_area = (EditText)findViewById(R.id.launcher_tryhere_area);
|
||||
if (VERSION.SDK_INT >= 28)
|
||||
_tryhere_area.addOnUnhandledKeyEventListener(
|
||||
this.new Tryhere_OnUnhandledKeyEventListener());
|
||||
setup_intro_video(_intro_video);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart()
|
||||
{
|
||||
super.onStart();
|
||||
_animations = new ArrayList<Animatable>();
|
||||
_animations.add(find_anim(R.id.launcher_anim_swipe));
|
||||
_handler = new Handler(getMainLooper(), this);
|
||||
_handler.sendEmptyMessageDelayed(0, 500);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handleMessage(Message _msg)
|
||||
{
|
||||
for (Animatable anim : _animations)
|
||||
anim.start();
|
||||
_handler.sendEmptyMessageDelayed(0, 3000);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -70,31 +94,10 @@ public class LauncherActivity extends Activity
|
||||
imm.showInputMethodPicker();
|
||||
}
|
||||
|
||||
static void setup_intro_video(final VideoView v)
|
||||
Animatable find_anim(int id)
|
||||
{
|
||||
if (VERSION.SDK_INT >= 26)
|
||||
v.setAudioFocusRequest(AudioManager.AUDIOFOCUS_NONE);
|
||||
v.setVideoURI(Uri.parse("android.resource://" +
|
||||
v.getContext().getPackageName() + "/" + R.raw.intro_video));
|
||||
v.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
|
||||
{
|
||||
@Override
|
||||
public void onPrepared(MediaPlayer mp)
|
||||
{
|
||||
mp.setLooping(true);
|
||||
}
|
||||
});
|
||||
v.setOnErrorListener(new MediaPlayer.OnErrorListener()
|
||||
{
|
||||
@Override
|
||||
public boolean onError(MediaPlayer mp, int what, int extra)
|
||||
{
|
||||
v.stopPlayback();
|
||||
v.setVisibility(View.GONE);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
v.start();
|
||||
ImageView img = (ImageView)findViewById(id);
|
||||
return (Animatable)img.getDrawable();
|
||||
}
|
||||
|
||||
@TargetApi(28)
|
||||
|
@ -110,7 +110,7 @@ public final class Pointers implements Handler.Callback
|
||||
if (latched)
|
||||
add_fake_pointer(key, kv, lock);
|
||||
}
|
||||
else if ((ptr.flags & FLAG_P_FAKE) != 0)
|
||||
else if ((ptr.flags & FLAG_P_FAKE) == 0)
|
||||
{} // Key already latched but not by a fake ptr, do nothing.
|
||||
else if (lock)
|
||||
{
|
||||
|
@ -40,7 +40,7 @@ public class CustomExtraKeysPreference extends ListGroupPreference<String>
|
||||
if (key_names != null)
|
||||
{
|
||||
for (String key_name : key_names)
|
||||
kvs.put(KeyValue.makeStringKey(key_name), KeyboardData.PreferredPos.DEFAULT);
|
||||
kvs.put(KeyValue.parseKeyDefinition(key_name), KeyboardData.PreferredPos.DEFAULT);
|
||||
}
|
||||
return kvs;
|
||||
}
|
||||
|
@ -72,6 +72,34 @@ public class ExtraKeysPreference extends PreferenceCategory
|
||||
"f11_placeholder",
|
||||
"f12_placeholder",
|
||||
"menu",
|
||||
"scroll_lock",
|
||||
"combining_dot_above",
|
||||
"combining_double_aigu",
|
||||
"combining_slash",
|
||||
"combining_arrow_right",
|
||||
"combining_breve",
|
||||
"combining_bar",
|
||||
"combining_aigu",
|
||||
"combining_caron",
|
||||
"combining_cedille",
|
||||
"combining_circonflexe",
|
||||
"combining_grave",
|
||||
"combining_macron",
|
||||
"combining_ring",
|
||||
"combining_tilde",
|
||||
"combining_trema",
|
||||
"combining_ogonek",
|
||||
"combining_dot_below",
|
||||
"combining_horn",
|
||||
"combining_hook_above",
|
||||
"combining_vertical_tilde",
|
||||
"combining_inverted_breve",
|
||||
"combining_pokrytie",
|
||||
"combining_slavonic_psili",
|
||||
"combining_slavonic_dasia",
|
||||
"combining_payerok",
|
||||
"combining_titlo",
|
||||
"combining_vzmet"
|
||||
};
|
||||
|
||||
/** Whether an extra key is enabled by default. */
|
||||
@ -121,6 +149,36 @@ public class ExtraKeysPreference extends PreferenceCategory
|
||||
case "ª": id = R.string.key_descr_ª; break;
|
||||
case "º": id = R.string.key_descr_º; break;
|
||||
case "switch_clipboard": id = R.string.key_descr_clipboard; break;
|
||||
|
||||
case "combining_dot_above":
|
||||
case "combining_double_aigu":
|
||||
case "combining_slash":
|
||||
case "combining_arrow_right":
|
||||
case "combining_breve":
|
||||
case "combining_bar":
|
||||
case "combining_aigu":
|
||||
case "combining_caron":
|
||||
case "combining_cedille":
|
||||
case "combining_circonflexe":
|
||||
case "combining_grave":
|
||||
case "combining_macron":
|
||||
case "combining_ring":
|
||||
case "combining_tilde":
|
||||
case "combining_trema":
|
||||
case "combining_ogonek":
|
||||
case "combining_dot_below":
|
||||
case "combining_horn":
|
||||
case "combining_hook_above":
|
||||
case "combining_vertical_tilde":
|
||||
case "combining_inverted_breve":
|
||||
case "combining_pokrytie":
|
||||
case "combining_slavonic_psili":
|
||||
case "combining_slavonic_dasia":
|
||||
case "combining_payerok":
|
||||
case "combining_titlo":
|
||||
case "combining_vzmet":
|
||||
id = R.string.key_descr_combining;
|
||||
break;
|
||||
}
|
||||
if (id == 0)
|
||||
return null;
|
||||
|
@ -11,7 +11,7 @@
|
||||
<key key0="ه" key2="۸" key3="*"/>
|
||||
<key key0="خ" key2="۹" key3="(" key4=")"/>
|
||||
<key key0="ح" key2="۰"/>
|
||||
<key key0="ج" key2="چ"/>
|
||||
<key key0="ج"/>
|
||||
</row>
|
||||
<row>
|
||||
<key key0="ش" key2="loc tab"/>
|
||||
@ -29,13 +29,13 @@
|
||||
<row>
|
||||
<key shift="0.5" key0="ظ"/>
|
||||
<key key0="ط"/>
|
||||
<key key0="ز" key2="«"/>
|
||||
<key key0="ر" key2="»"/>
|
||||
<key key0="ژ" key2="."/>
|
||||
<key key0="ز" key1="«" key2="»"/>
|
||||
<key key0="ر" key1="ژ" key2="."/>
|
||||
<key key0="ذ" key2=":"/>
|
||||
<key key0="د" key2="؛"/>
|
||||
<key key0="پ" key2="؟"/>
|
||||
<key key0="و"/>
|
||||
<key key0="چ"/>
|
||||
<key width="1.5" key0="backspace" key2="delete"/>
|
||||
</row>
|
||||
</keyboard>
|
||||
|
@ -8,32 +8,32 @@
|
||||
<fn a="у" b="у̂" />
|
||||
<fn a="cursor_left" b="home" />
|
||||
<fn a="cursor_right" b="end" />
|
||||
<ctrl a="љ" b="q" />
|
||||
<ctrl a="њ" b="w" />
|
||||
<ctrl a="е" b="e" />
|
||||
<ctrl a="р" b="r" />
|
||||
<ctrl a="т" b="t" />
|
||||
<ctrl a="ж" b="y" />
|
||||
<ctrl a="у" b="u" />
|
||||
<ctrl a="и" b="i" />
|
||||
<ctrl a="о" b="o" />
|
||||
<ctrl a="п" b="p" />
|
||||
<ctrl a="а" b="a" />
|
||||
<ctrl a="с" b="s" />
|
||||
<ctrl a="д" b="d" />
|
||||
<ctrl a="ф" b="f" />
|
||||
<ctrl a="г" b="g" />
|
||||
<ctrl a="х" b="h" />
|
||||
<ctrl a="ј" b="j" />
|
||||
<ctrl a="к" b="k" />
|
||||
<ctrl a="л" b="l" />
|
||||
<ctrl a="з" b="z" />
|
||||
<ctrl a="џ" b="x" />
|
||||
<ctrl a="ц" b="c" />
|
||||
<ctrl a="в" b="v" />
|
||||
<ctrl a="б" b="b" />
|
||||
<ctrl a="н" b="n" />
|
||||
<ctrl a="м" b="m" />
|
||||
<ctrl a="љ" b=":char symbol='љ':q" />
|
||||
<ctrl a="њ" b=":char symbol='њ':w" />
|
||||
<ctrl a="е" b=":char symbol='е':e" />
|
||||
<ctrl a="р" b=":char symbol='р':r" />
|
||||
<ctrl a="т" b=":char symbol='т':t" />
|
||||
<ctrl a="ж" b=":char symbol='ж':y" />
|
||||
<ctrl a="у" b=":char symbol='у':u" />
|
||||
<ctrl a="и" b=":char symbol='и':i" />
|
||||
<ctrl a="о" b=":char symbol='о':o" />
|
||||
<ctrl a="п" b=":char symbol='п':p" />
|
||||
<ctrl a="а" b=":char symbol='а':a" />
|
||||
<ctrl a="с" b=":char symbol='с':s" />
|
||||
<ctrl a="д" b=":char symbol='д':d" />
|
||||
<ctrl a="ф" b=":char symbol='ф':f" />
|
||||
<ctrl a="г" b=":char symbol='г':g" />
|
||||
<ctrl a="х" b=":char symbol='х':h" />
|
||||
<ctrl a="ј" b=":char symbol='ј':j" />
|
||||
<ctrl a="к" b=":char symbol='к':k" />
|
||||
<ctrl a="л" b=":char symbol='л':l" />
|
||||
<ctrl a="з" b=":char symbol='з':z" />
|
||||
<ctrl a="џ" b=":char symbol='џ':x" />
|
||||
<ctrl a="ц" b=":char symbol='ц':c" />
|
||||
<ctrl a="в" b=":char symbol='в':v" />
|
||||
<ctrl a="б" b=":char symbol='б':b" />
|
||||
<ctrl a="н" b=":char symbol='н':n" />
|
||||
<ctrl a="м" b=":char symbol='м':m" />
|
||||
</modmap>
|
||||
<row>
|
||||
<key key0="љ" ne="1" se="loc esc"/>
|
||||
|
42
srcs/layouts/cyrl_yqukeng_tj.xml
Normal file
@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<keyboard name="Tajiki Persian (Тоҷикӣ)" script="cyrillic">
|
||||
<row>
|
||||
<key key0="й" key7="esc" key4="delete" />
|
||||
<key key0="қ" key7="-" key8="_" />
|
||||
<key key0="у" key7="\@" key8="ӯ" />
|
||||
<key key0="к" key7="=" key8="+" />
|
||||
<key key0="е" key8="ё" key7="!" />
|
||||
<key key0="н" key7="$" key8="%"/>
|
||||
<key key0="г" key7="^" key8="ғ" />
|
||||
<key key0="ш" key3="(" key2=")" />
|
||||
<key key0="ҳ" key3="[" key2="]" />
|
||||
<key key0="з" key3="{" key2="}" />
|
||||
<key key0="х" key7="tab" key3="backspace" />
|
||||
</row>
|
||||
<row>
|
||||
<key key0="ф" key7="1" />
|
||||
<key key0="ҷ" key7="2" />
|
||||
<key key0="в" key7="3" />
|
||||
<key key0="а" key7="4" />
|
||||
<key key0="п" key7="5" />
|
||||
<key key0="р" key7="6" />
|
||||
<key key0="о" key7="7" />
|
||||
<key key0="л" key7="8" />
|
||||
<key key0="д" key7="9" key8="f11_placeholder" />
|
||||
<key key0="ж" key7="0" key8="f12_placeholder" />
|
||||
<key key0="э" key7="\?" key3="/" />
|
||||
</row>
|
||||
<row>
|
||||
<key width="1.18" key0="shift" key2="loc capslock" />
|
||||
<key width="0.96" key0="я" key7="`" key8=";" />
|
||||
<key width="0.96" key0="ч" key7="*" key8=":" />
|
||||
<key width="0.96" key0="с" key7="&" key8="\#" />
|
||||
<key width="0.96" key0="м" key7="|" key8="\\" />
|
||||
<key width="0.96" key0="и" key7="~" />
|
||||
<key width="0.96" key0="т" key7="ц" />
|
||||
<key width="0.96" key0="ӣ" key3="<" key2=">" />
|
||||
<key width="0.96" key0="б" key7="ъ" key8="ы" />
|
||||
<key width="0.96" key0="ю" key7=""" key8="'"/>
|
||||
<key width="1.18" key0="." key7="," />
|
||||
</row>
|
||||
</keyboard>
|
42
srcs/layouts/cyrl_yxukeng_os.xml
Normal file
@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<keyboard name="Old Church Slavonic (Црькъвьнословѣньскъ ѩзыкъ)" script="cyrillic">
|
||||
<row>
|
||||
<key key0="й" key7="esc" key4="delete" />
|
||||
<key key0="ѯ" key7="=" key8="+" />
|
||||
<key key0="у" key8="ѵ" key7="!" />
|
||||
<key key0="к" key7="%" key8="*" />
|
||||
<key key0="е" key7="ё" key8="combining_trema" />
|
||||
<key key0="н" key7="ѩ" key8="combining_titlo" />
|
||||
<key key0="г" key7="^" key8="combining_payerok" />
|
||||
<key key0="ш" key7="щ" key8="combining_vzmet" />
|
||||
<key key0="ѳ" key3="combining_slavonic_dasia" key2="combining_slavonic_psili" />
|
||||
<key key0="з" key3="combining_grave" key2="combining_aigu" />
|
||||
<key key0="х" key7="ҁ" key3="backspace" />
|
||||
</row>
|
||||
<row>
|
||||
<key key0="ф" key7="1" key4="tab" />
|
||||
<key key0="ꙉ" key7="2" key8="ъ" />
|
||||
<key key0="в" key7="3" key8="ꙑ" />
|
||||
<key key0="а" key7="4" key8="ь" />
|
||||
<key key0="п" key7="5" />
|
||||
<key key0="р" key7="6" />
|
||||
<key key0="о" key7="7" key8="ѡ" />
|
||||
<key key0="л" key7="8" />
|
||||
<key key0="д" key7="9" key8="f11_placeholder" />
|
||||
<key key0="ж" key7="0" key8="f12_placeholder" />
|
||||
<key key0="э" key7="/" key8="|" />
|
||||
</row>
|
||||
<row>
|
||||
<key width="1.18" key0="shift" />
|
||||
<key width="0.96" key0="ꙗ" key7="combining_breve" key8=";" />
|
||||
<key width="0.96" key0="ч" key7="combining_pokrytie" key8=":" />
|
||||
<key width="0.96" key0="с" key7="combining_inverted_breve" key8="`" />
|
||||
<key width="0.96" key0="м" key7="ѭ" />
|
||||
<key width="0.96" key0="и" key7="combining_vertical_tilde" key8="-" />
|
||||
<key width="0.96" key0="т" key7="\?" key8="\\" />
|
||||
<key width="0.96" key0="ц" key3="<" key2=">" />
|
||||
<key width="0.96" key0="б" key3="(" key2=")" />
|
||||
<key width="0.96" key0="ю" key3="{" key2="}" />
|
||||
<key width="1.18" key0="." key7="," key8="_" />
|
||||
</row>
|
||||
</keyboard>
|
@ -1,46 +1,72 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- https://neo-layout.org/Layouts/bone/ -->
|
||||
<keyboard name="Bone" bottom_row="false" script="latin">
|
||||
<!-- first row + characters from number row:
|
||||
jduaxphlmwß
|
||||
…_[]^!<>=&ſ
|
||||
°§ℓ»«$€„“”—
|
||||
›‹¢¥‚‘’
|
||||
-->
|
||||
<row>
|
||||
<key key0="j" key2="loc esc" key4="…"/>
|
||||
<key key0="d" key2="°" key4="_"/>
|
||||
<key key0="u" key2="§" key4="["/>
|
||||
<key key0="a" key4="]"/>
|
||||
<key key0="x" key4="^"/>
|
||||
<key key0="p" key3="!" key4="7"/>
|
||||
<key key0="h" key3="<" key4="8"/>
|
||||
<key key0="l" key1="ℓ" key3=">" key4="9"/>
|
||||
<key key0="m" key1="≠" key3="="/>
|
||||
<key key0="w" key3="&"/>
|
||||
<!--left side-->
|
||||
<key key0="j" key2="°" key4="…"/>
|
||||
<key key0="d" key2="§" key4="_"/>
|
||||
<key key0="u" key2="ℓ" key4="["/>
|
||||
<key key0="a" key2="»" key4="]" key1="›"/>
|
||||
<key key0="x" key2="«" key4="^" key1="‹"/>
|
||||
<!--middle-->
|
||||
<key key0="p" key7="¢" key8="!"/>
|
||||
<!--right side-->
|
||||
<key key0="h" key1="€" key3="<" key4="7" key2="¥"/>
|
||||
<key key0="l" key1="„" key3=">" key4="8" key2="‚"/>
|
||||
<key key0="m" key1="“" key3="=" key4="9" key2="‘"/>
|
||||
<key key0="w" key1="”" key3="&" key2="’"/>
|
||||
<key key0="ß" key1="—" key3="ſ"/>
|
||||
</row>
|
||||
<!--second row:
|
||||
ctieobnrsgq
|
||||
\/{}*?()-:@
|
||||
-->
|
||||
<row>
|
||||
<key key0="c" key2="loc tab" key4="\\"/>
|
||||
<key key0="t" key1="accent_circonflexe" key2="accent_caron" key4="/"/>
|
||||
<key key0="i" key1="accent_aigu" key2="accent_grave" key4="{"/>
|
||||
<key key0="e" key1="accent_cedille" key2="accent_ogonek" key4="}"/>
|
||||
<key key0="o" key1="accent_ring" key2="accent_dot_above" key4="*"/>
|
||||
<key key0="b" key2="accent_macron" key3="\?" key4="4"/>
|
||||
<key key0="n" key2="accent_tilde" key3="(" key4="5"/>
|
||||
<key key0="r" key2="accent_trema" key3=")" key4="6"/>
|
||||
<key key0="s" key2="accent_slash" key3="-"/>
|
||||
<key key0="g" key1="\@" key3=":"/>
|
||||
<!--left side-->
|
||||
<key key0="c" key4="\\"/>
|
||||
<key key0="t" key4="/"/>
|
||||
<key key0="i" key4="{"/>
|
||||
<key key0="e" key4="}"/>
|
||||
<key key0="o" key4="*"/>
|
||||
<!--middle-->
|
||||
<key key0="b" key8="\?"/>
|
||||
<!--right side-->
|
||||
<key key0="n" key3="(" key4="4"/>
|
||||
<key key0="r" key3=")" key4="5"/>
|
||||
<key key0="s" key3="-" key4="6"/>
|
||||
<key key0="g" key3=":"/>
|
||||
<key key0="q" key3="@"/>
|
||||
</row>
|
||||
<!--third row -> compressed to also fit shift and backspace:
|
||||
fvüäöyz,.k
|
||||
#$|~`+%"';
|
||||
-->
|
||||
<row>
|
||||
<key width="1.5" key0="shift" key4="\#" key2="loc capslock"/>
|
||||
<key key0="f" key4="|"/>
|
||||
<key key0="v" key4="~"/>
|
||||
<key key0="ß" key4="`"/>
|
||||
<!--left side-->
|
||||
<key width="1.5" key0="shift" key4="\#"/>
|
||||
<key key0="f" key4="$"/>
|
||||
<key key0="v" key4="|"/>
|
||||
<key key0="ü" key4="~"/>
|
||||
<key key0="ä" key4="`"/>
|
||||
<!--right side-->
|
||||
<key key0="ö" key3="+"/>
|
||||
<key key0="y" key3="%" key4="1"/>
|
||||
<key key0="z" key1=""" key3="+" key4="2"/>
|
||||
<key key0="q" key1="'" key3="," key4="3"/>
|
||||
<key key0="k" key3="."/>
|
||||
<key width="1.5" key0="backspace" key1="delete" key3=";"/>
|
||||
<key key0="z" key3="," key1=""" key4="2"/>
|
||||
<key key0="k" key3="." key1="'" key4="3"/>
|
||||
<key width="1.5" key0="backspace" key3=";" key1="delete"/>
|
||||
</row>
|
||||
<!--bottom row-->
|
||||
<row height="0.95">
|
||||
<key width="1.8" key0="ctrl" key2="loc meta" key4="switch_numeric"/>
|
||||
<key width="1.2" key0="fn" key1="loc alt" key2="loc change_method" key3="switch_emoji" key4="config"/>
|
||||
<key width="4.0" key0="space" key7="switch_forward" key8="0"/>
|
||||
<key width="1.2" key7="up" key6="right" key5="left" key8="down"/>
|
||||
<key width="5.0" key0="space" key7="switch_forward" key8="0"/>
|
||||
<key width="1.2" key5="left" key6="right" key7="up" key8="down"/>
|
||||
<key width="1.8" key0="enter" key3="action"/>
|
||||
</row>
|
||||
</keyboard>
|
||||
|
32
srcs/res/SvgToVector.java
Normal file
@ -0,0 +1,32 @@
|
||||
package srcs.res;
|
||||
|
||||
import com.android.ide.common.vectordrawable.Svg2Vector;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
|
||||
/** Inspired from Bernard Ladenthin's answer:
|
||||
https://stackoverflow.com/a/78898372 */
|
||||
public class SvgToVector
|
||||
{
|
||||
public static void main(String[] args)
|
||||
{
|
||||
if (args.length != 2)
|
||||
{
|
||||
System.out.println("Usage: svg_to_vector <input_file> <output_file>");
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
File input_file = new File(args[0]);
|
||||
FileOutputStream output_stream = new FileOutputStream(args[1]);
|
||||
String warnings;
|
||||
warnings = Svg2Vector.parseSvgToXml(input_file, output_stream);
|
||||
System.err.println(warnings);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
System.exit(2);
|
||||
}
|
||||
}
|
||||
}
|
192
srcs/res/doc_key.svg
Normal file
@ -0,0 +1,192 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="35mm"
|
||||
height="40mm"
|
||||
viewBox="0 0 35 40"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
sodipodi:docname="doc_key.svg"
|
||||
inkscape:export-filename="key_u.svg"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#1b1b1b"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#1b1b1b"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="4.6038101"
|
||||
inkscape:cx="160.95364"
|
||||
inkscape:cy="75.69817"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1440"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer2">
|
||||
<inkscape:page
|
||||
x="0"
|
||||
y="0"
|
||||
width="35"
|
||||
height="40"
|
||||
id="page1"
|
||||
margin="0"
|
||||
bleed="0"
|
||||
inkscape:label="g" />
|
||||
<inkscape:page
|
||||
x="45"
|
||||
y="0"
|
||||
width="35"
|
||||
height="40"
|
||||
id="page2"
|
||||
margin="0"
|
||||
bleed="0"
|
||||
inkscape:label="u" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="U"
|
||||
style="display:inline">
|
||||
<g
|
||||
inkscape:label="Background"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
style="display:inline"
|
||||
transform="translate(42.916821,-9.9998472)">
|
||||
<rect
|
||||
style="display:inline;fill:#333333;fill-opacity:1;stroke:#404040;stroke-width:0.251;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
id="rect1"
|
||||
width="14.749311"
|
||||
height="19.74971"
|
||||
x="12.208678"
|
||||
y="20.125347"
|
||||
ry="1.1332803"
|
||||
inkscape:label="rect1" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.48996px;font-family:'Fira Code';-inkscape-font-specification:'Fira Code, @wght=500';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 500;display:inline;fill:#fdfdfd;fill-opacity:1;stroke:none;stroke-width:0.265729;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
x="59.864403"
|
||||
y="22.246796"
|
||||
id="text1"
|
||||
inkscape:label="text1"
|
||||
inkscape:transform-center-x="-0.00074323194"
|
||||
inkscape:transform-center-y="-0.001350474"
|
||||
transform="scale(1.0003873,0.99961285)"><tspan
|
||||
id="tspan1"
|
||||
sodipodi:role="line"
|
||||
x="59.864403"
|
||||
y="22.246796"
|
||||
style="stroke-width:0.265729">u</tspan><tspan
|
||||
id="tspan2"
|
||||
sodipodi:role="line"
|
||||
x="59.864403"
|
||||
y="32.859245"
|
||||
style="stroke-width:0.265729" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.65997px;font-family:'Fira Code';-inkscape-font-specification:'Fira Code, @wght=500';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 500;display:inline;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.265728;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
x="55.882885"
|
||||
y="28.802013"
|
||||
id="text3"
|
||||
transform="scale(1.0003873,0.99961285)"
|
||||
inkscape:label="text3"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.65997px;font-family:'Fira Code';-inkscape-font-specification:'Fira Code, @wght=500';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 500;fill:#cccccc;fill-opacity:1;stroke-width:0.265729"
|
||||
x="55.882885"
|
||||
y="28.802013"
|
||||
id="tspan4">&</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.65997px;font-family:'Fira Code';-inkscape-font-specification:'Fira Code, @wght=500';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 500;display:inline;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.265728;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
x="65.686905"
|
||||
y="15.189408"
|
||||
id="text5"
|
||||
transform="scale(1.0003873,0.99961285)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.65997px;font-family:'Fira Code';-inkscape-font-specification:'Fira Code, @wght=500';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 500;fill:#cccccc;fill-opacity:1;stroke-width:0.265729"
|
||||
x="65.686905"
|
||||
y="15.189408">7</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="G"
|
||||
style="display:inline">
|
||||
<g
|
||||
inkscape:label="Background"
|
||||
inkscape:groupmode="layer"
|
||||
id="g2"
|
||||
style="display:inline">
|
||||
<rect
|
||||
style="display:inline;fill:#333333;fill-opacity:1;stroke:#404040;stroke-width:0.251;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
id="rect2"
|
||||
width="14.749311"
|
||||
height="19.74971"
|
||||
x="10.125345"
|
||||
y="10.125347"
|
||||
ry="1.1332803"
|
||||
inkscape:label="rect1" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.65997px;font-family:'Fira Code';-inkscape-font-specification:'Fira Code, @wght=500';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 500;display:inline;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.265728;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
x="10.887006"
|
||||
y="27.77977"
|
||||
id="text3-3"
|
||||
transform="scale(1.0003873,0.99961285)"
|
||||
inkscape:label="text3"><tspan
|
||||
sodipodi:role="line"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.65997px;font-family:'Fira Code';-inkscape-font-specification:'Fira Code, @wght=500';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 500;fill:#cccccc;fill-opacity:1;stroke-width:0.265729"
|
||||
x="10.887006"
|
||||
y="27.77977"
|
||||
id="tspan4-7">_</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.48996px;font-family:'Fira Code';-inkscape-font-specification:'Fira Code, @wght=500';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 500;display:inline;fill:#fdfdfd;fill-opacity:1;stroke:none;stroke-width:0.265729;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
x="14.868526"
|
||||
y="22.204519"
|
||||
id="text1-2"
|
||||
inkscape:label="text1"
|
||||
inkscape:transform-center-x="-0.00074323194"
|
||||
inkscape:transform-center-y="-0.001350474"
|
||||
transform="scale(1.0003873,0.99961285)"><tspan
|
||||
id="tspan1-0"
|
||||
sodipodi:role="line"
|
||||
x="14.868526"
|
||||
y="22.204519"
|
||||
style="stroke-width:0.265729">g</tspan><tspan
|
||||
id="tspan2-2"
|
||||
sodipodi:role="line"
|
||||
x="14.868526"
|
||||
y="32.816971"
|
||||
style="stroke-width:0.265729" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.65997px;font-family:'Fira Code';-inkscape-font-specification:'Fira Code, @wght=500';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 500;display:inline;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:0.265728;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
x="20.691027"
|
||||
y="15.147132"
|
||||
id="text5-5"
|
||||
transform="scale(1.0003873,0.99961285)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5-9"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.65997px;font-family:'Fira Code';-inkscape-font-specification:'Fira Code, @wght=500';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;font-variation-settings:'wght' 500;fill:#cccccc;fill-opacity:1;stroke-width:0.265729"
|
||||
x="20.691027"
|
||||
y="15.147132">-</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 9.4 KiB |
25
srcs/res/gen_doc_key_drawables.sh
Normal file
@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
cd "$(dirname $0)"
|
||||
|
||||
DRAWABLE_DIR=../../res/drawable
|
||||
ANDROID_LIB=$ANDROID_SDK_ROOT/tools/lib
|
||||
|
||||
first () { echo "$1"; }
|
||||
JAVA_ARGS=(
|
||||
-classpath
|
||||
"$(first $ANDROID_LIB/sdk-common-*.jar):$(first $ANDROID_LIB/common-*.jar)"
|
||||
)
|
||||
svg_to_vector ()
|
||||
{
|
||||
java "${JAVA_ARGS[@]}" SvgToVector.java "$@"
|
||||
}
|
||||
|
||||
TMP=`mktemp -d`
|
||||
trap "rm -r '$TMP'" EXIT
|
||||
set -x
|
||||
|
||||
inkscape doc_key.svg -o "$TMP/doc_key_u.svg" -C --export-page 2 --export-plain-svg --export-text-to-path
|
||||
|
||||
svg_to_vector "$TMP/doc_key_u.svg" "$DRAWABLE_DIR/doc_key_u.xml"
|
@ -1,9 +1,7 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="-10 0 750 1000"
|
||||
fill="currentColor">
|
||||
<!-- created by @sdrapha - https://github.com/sdrapha/IconFontSVG
|
||||
License - LICENSE: CC BY-SA 4.0 -->
|
||||
<!-- derived from Entypo+ arrow-left-bold by Daniel Bruce -->
|
||||
<title>arrow-home</title>
|
||||
<path d="M0 165h50v669h-50v-669zM378 830l-328 -330l328 -330v190h352v278h-352v192z" />
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!-- Modified from DejaVuSans -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 1726 2048">
|
||||
<path fill="currentColor"
|
||||
d="M1613 63v169h-1322v1324h-169v-1493h1491zM412 416l63 -63h556v169h-330l862 862l-120 120l-862 -862v330h-169v-556z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 381 B After Width: | Height: | Size: 450 B |
@ -1,9 +1,7 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="-10 0 750 1000"
|
||||
fill="currentColor">
|
||||
<!-- created by @sdrapha - https://github.com/sdrapha/IconFontSVG
|
||||
License - LICENSE: CC BY-SA 4.0 -->
|
||||
<!-- derived from Entypo+ arrow-right-bold by Daniel Bruce -->
|
||||
<title>arrow-end</title>
|
||||
<path d="M680 170h50v660h-50v-660zM350 170l330 330l-330 330v-192h-350v-278h350v-190z" />
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!-- Modified from DejaVuSans -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="-10 0 1726 2048">
|
||||
<path fill="currentColor"
|
||||
d="M122 1556v-169h1322v-1324h169v1493h-1491zM1323 1203l-63 63h-556v-169h330l-862 -862l120 -120l862 862v-330h169v556z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 384 B After Width: | Height: | Size: 453 B |
41
srcs/special_font/150.svg
Normal file
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Accent from Roboto font family (Regular). Apache License, Version 2.0. -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="-20 0 1168 2048"
|
||||
id="svg1"
|
||||
sodipodi:docname="50.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.43103287"
|
||||
inkscape:cx="573.04214"
|
||||
inkscape:cy="259.84097"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g1" />
|
||||
<g
|
||||
transform="matrix(1 0 0 -1 0 1536)"
|
||||
id="g1">
|
||||
<path
|
||||
id="path1"
|
||||
d="M 650 1541 L 465 1275 L 613 1275 L 882 1535 L 880 1541 L 650 1541 z M 788.03711 1185.2168 L 788.03711 834.99219 L 884.67969 834.99219 L 884.67969 1185.2168 L 788.03711 1185.2168 z M 516.67773 1130.7461 C 398.97689 1122.8994 292.60787 1080.177 197.57227 1002.5801 L 194.95703 1005.1953 C 242.90998 956.37142 266.88672 931.52279 266.88672 930.65039 C 344.48318 990.80911 427.7482 1024.3767 516.67773 1031.3516 L 516.67773 1130.7461 z M 121.71875 938.49805 L 127.9043 933.55078 L 125.64258 935.88281 L 121.71875 938.49805 z M 127.9043 933.55078 L 128.2207 933.22461 C 128.2327 933.23861 128.24581 933.25358 128.25781 933.26758 L 127.9043 933.55078 z M 128.2207 933.22461 C 48.031653 841.68937 2.2696687 735.33339 -9.0625 614.16211 L 90.332031 614.16211 C 101.6658 709.19571 137.41295 791.15224 197.57227 860.0293 C 197.57227 860.90169 187.54483 871.80024 167.49219 892.72461 L 128.2207 933.22461 z M 788.03711 733.03516 L 788.03711 382.8125 L 884.67969 382.8125 L 884.67969 733.03516 L 788.03711 733.03516 z M -9.0605469 517.38281 C -0.34667559 391.03054 42.335595 282.09919 118.98047 190.58398 C 123.06104 195.44428 144.50061 217.66171 189.72656 263.66797 C 132.18314 335.1603 99.052766 419.73181 90.333984 517.38281 L -9.0605469 517.38281 z M 118.98047 190.58398 C 118.49847 190.00988 115.08964 186.50781 115.18164 186.50781 L 119.10352 190.43164 C 119.06152 190.48164 119.02242 190.53368 118.98047 190.58398 z M 788.03711 280.85547 L 788.03711 -69.369141 L 884.67969 -69.369141 L 884.67969 280.85547 L 788.03711 280.85547 z M 259.04102 190.43164 L 189.72656 121.11719 C 287.37616 38.28987 396.36145 -7.0487922 516.67969 -14.896484 L 516.67969 84.498047 C 423.38876 94.961136 337.50938 130.2728 259.04102 190.43164 z " />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
41
srcs/special_font/151.svg
Normal file
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Accent from Roboto font family (Regular). Apache License, Version 2.0. -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="-20 0 1168 2048"
|
||||
id="svg1"
|
||||
sodipodi:docname="51.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.32224737"
|
||||
inkscape:cx="1238.1792"
|
||||
inkscape:cy="301.01099"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<g
|
||||
transform="matrix(1 0 0 -1 0 1536)"
|
||||
id="g1">
|
||||
<path
|
||||
id="path1"
|
||||
d="M 240 1543 L 240 1523 L 494 1280 L 613 1280 L 870 1525 L 870 1543 L 700 1543 L 553 1395 L 406 1543 L 240 1543 z M 788.03711 1185.4141 L 788.03711 835.18945 L 884.67969 835.18945 L 884.67969 1185.4141 L 788.03711 1185.4141 z M 516.67773 1130.9434 C 398.97689 1123.0967 292.60787 1080.3743 197.57227 1002.7773 L 194.95703 1005.3926 C 242.90998 956.56869 266.88672 931.72006 266.88672 930.84766 C 344.48318 991.00638 427.7482 1024.5739 516.67773 1031.5488 L 516.67773 1130.9434 z M 121.71875 938.69531 L 127.9043 933.74805 L 125.64258 936.08008 L 121.71875 938.69531 z M 127.9043 933.74805 L 128.2207 933.42188 C 128.2327 933.43587 128.24581 933.45084 128.25781 933.46484 L 127.9043 933.74805 z M 128.2207 933.42188 C 48.031653 841.88664 2.2696687 735.53065 -9.0625 614.35938 L 90.332031 614.35938 C 101.6658 709.39298 137.41295 791.3495 197.57227 860.22656 C 197.57227 861.09895 187.54483 871.99751 167.49219 892.92188 L 128.2207 933.42188 z M 788.03711 733.23242 L 788.03711 383.00977 L 884.67969 383.00977 L 884.67969 733.23242 L 788.03711 733.23242 z M -9.0605469 517.58008 C -0.34667559 391.2278 42.335595 282.29646 118.98047 190.78125 C 123.06104 195.64155 144.50061 217.85898 189.72656 263.86523 C 132.18314 335.35756 99.052766 419.92908 90.333984 517.58008 L -9.0605469 517.58008 z M 118.98047 190.78125 C 118.49847 190.20715 115.08964 186.70508 115.18164 186.70508 L 119.10352 190.62891 C 119.06152 190.67891 119.02242 190.73095 118.98047 190.78125 z M 788.03711 281.05273 L 788.03711 -69.171875 L 884.67969 -69.171875 L 884.67969 281.05273 L 788.03711 281.05273 z M 259.04102 190.62891 L 189.72656 121.31445 C 287.37616 38.487136 396.36145 -6.8515266 516.67969 -14.699219 L 516.67969 84.695312 C 423.38876 95.158402 337.50938 130.47007 259.04102 190.62891 z " />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.9 KiB |
41
srcs/special_font/152.svg
Normal file
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Accent from Roboto font family (Regular). Apache License, Version 2.0. -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="-20 0 1168 2048"
|
||||
id="svg1"
|
||||
sodipodi:docname="52.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.28469254"
|
||||
inkscape:cx="1053.7684"
|
||||
inkscape:cy="540.93444"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<g
|
||||
transform="matrix(1 0 0 -1 0 1536)"
|
||||
id="g1">
|
||||
<path
|
||||
id="path1"
|
||||
d="M 788.03711 1185.3613 L 788.03711 835.13672 L 884.67969 835.13672 L 884.67969 1185.3613 L 788.03711 1185.3613 z M 516.67773 1130.8906 C 398.97689 1123.0439 292.60787 1080.3215 197.57227 1002.7246 L 194.95703 1005.3398 C 242.90998 956.51595 266.88672 931.66732 266.88672 930.79492 C 344.48318 990.95364 427.7482 1024.5212 516.67773 1031.4961 L 516.67773 1130.8906 z M 121.71875 938.64258 L 127.9043 933.69531 L 125.64258 936.02734 L 121.71875 938.64258 z M 127.9043 933.69531 L 128.2207 933.36914 C 128.2327 933.38314 128.24581 933.39811 128.25781 933.41211 L 127.9043 933.69531 z M 128.2207 933.36914 C 48.031653 841.8339 2.2696687 735.47792 -9.0625 614.30664 L 90.332031 614.30664 C 101.6658 709.34025 137.41295 791.29677 197.57227 860.17383 C 197.57227 861.04622 187.54483 871.94477 167.49219 892.86914 L 128.2207 933.36914 z M 788.03711 733.17969 L 788.03711 382.95703 L 884.67969 382.95703 L 884.67969 733.17969 L 788.03711 733.17969 z M -9.0605469 517.52734 C -0.34667559 391.17507 42.335595 282.24372 118.98047 190.72852 C 123.06104 195.58881 144.50061 217.80625 189.72656 263.8125 C 132.18314 335.30483 99.052766 419.87634 90.333984 517.52734 L -9.0605469 517.52734 z M 118.98047 190.72852 C 118.49847 190.15442 115.08964 186.65234 115.18164 186.65234 L 119.10352 190.57617 C 119.06152 190.62617 119.02242 190.67822 118.98047 190.72852 z M 788.03711 281 L 788.03711 -69.224609 L 884.67969 -69.224609 L 884.67969 281 L 788.03711 281 z M 259.04102 190.57617 L 189.72656 121.26172 C 278.02009 46.370309 375.61486 2.2381133 482.44141 -11.353516 L 451 -144 C 508.99994 -148.66667 550.00002 -157.33334 574 -170 C 597.99998 -182.66666 610 -205.00003 610 -237 C 610 -269.66664 595.3333 -294.16669 566 -310.5 C 536.6667 -326.83331 497.99995 -335 450 -335 L 457 -444 C 554.9999 -444 630.33338 -424.99996 683 -387 C 735.66662 -349.00004 762 -297.99994 762 -234 C 762 -180.66672 747.66664 -140.3333 719 -113 C 690.33336 -85.666694 654.33329 -68.333326 611 -61 L 623 -9 L 516.67969 -9 L 516.67969 84.642578 C 423.38876 95.105668 337.50938 130.41733 259.04102 190.57617 z " />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.2 KiB |
41
srcs/special_font/153.svg
Normal file
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Accent from Roboto font family (Regular). Apache License, Version 2.0. -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="-20 0 1168 2048"
|
||||
id="svg1"
|
||||
sodipodi:docname="53.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.43330418"
|
||||
inkscape:cx="964.68028"
|
||||
inkscape:cy="925.44687"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<g
|
||||
transform="matrix(1 0 0 -1 0 1536)"
|
||||
id="g1">
|
||||
<path
|
||||
id="path1"
|
||||
d="M 495 1542 L 249 1305 L 249 1279 L 409 1279 L 555 1427 L 702 1279 L 863 1279 L 863 1304 L 615 1542 L 495 1542 z M 788.03711 1186.0098 L 788.03711 835.78516 L 884.67969 835.78516 L 884.67969 1186.0098 L 788.03711 1186.0098 z M 516.67773 1131.5391 C 398.97689 1123.6924 292.60787 1080.97 197.57227 1003.373 L 194.95703 1005.9883 C 242.90998 957.16439 266.88672 932.31576 266.88672 931.44336 C 344.48318 991.60208 427.7482 1025.1696 516.67773 1032.1445 L 516.67773 1131.5391 z M 121.71875 939.29102 L 127.9043 934.34375 L 125.64258 936.67578 L 121.71875 939.29102 z M 127.9043 934.34375 L 128.2207 934.01758 C 128.2327 934.03158 128.24581 934.04655 128.25781 934.06055 L 127.9043 934.34375 z M 128.2207 934.01758 C 48.031653 842.48234 2.2696687 736.12636 -9.0625 614.95508 L 90.332031 614.95508 C 101.6658 709.98868 137.41295 791.9452 197.57227 860.82227 C 197.57227 861.69465 187.54483 872.59321 167.49219 893.51758 L 128.2207 934.01758 z M 788.03711 733.82812 L 788.03711 383.60547 L 884.67969 383.60547 L 884.67969 733.82812 L 788.03711 733.82812 z M -9.0605469 518.17578 C -0.34667559 391.82351 42.335595 282.89216 118.98047 191.37695 C 123.06104 196.23725 144.50061 218.45468 189.72656 264.46094 C 132.18314 335.95327 99.052766 420.52478 90.333984 518.17578 L -9.0605469 518.17578 z M 118.98047 191.37695 C 118.49847 190.80285 115.08964 187.30078 115.18164 187.30078 L 119.10352 191.22461 C 119.06152 191.27461 119.02242 191.32665 118.98047 191.37695 z M 788.03711 281.64844 L 788.03711 -68.576172 L 884.67969 -68.576172 L 884.67969 281.64844 L 788.03711 281.64844 z M 259.04102 191.22461 L 189.72656 121.91016 C 287.37616 39.082839 396.36145 -6.2558235 516.67969 -14.103516 L 516.67969 85.291016 C 423.38876 95.754105 337.50938 131.06577 259.04102 191.22461 z " />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.9 KiB |
41
srcs/special_font/154.svg
Normal file
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Accent from Roboto font family (Regular). Apache License, Version 2.0. -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="-20 0 1168 2048"
|
||||
id="svg1"
|
||||
sodipodi:docname="54.combined.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.43113456"
|
||||
inkscape:cx="354.87761"
|
||||
inkscape:cy="635.53245"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<g
|
||||
transform="matrix(1 0 0 -1 0 1536)"
|
||||
id="g1">
|
||||
<path
|
||||
id="path1"
|
||||
d="M 233 1545 L 230 1539 L 480 1279 L 638 1279 L 463 1545 L 233 1545 z M 788.03711 1185.8887 L 788.03711 835.66406 L 884.67969 835.66406 L 884.67969 1185.8887 L 788.03711 1185.8887 z M 516.67773 1131.418 C 398.97701 1123.5713 292.60777 1080.8489 197.57227 1003.252 L 194.95703 1005.8672 C 242.90993 957.04333 266.88672 932.19466 266.88672 931.32227 C 344.4831 991.48093 427.74829 1025.0485 516.67773 1032.0234 L 516.67773 1131.418 z M 121.71875 939.16992 L 127.9043 934.22266 L 125.64258 936.55469 L 121.71875 939.16992 z M 127.9043 934.22266 L 128.2207 933.89648 C 128.2327 933.91048 128.24581 933.92545 128.25781 933.93945 L 127.9043 934.22266 z M 128.2207 933.89648 C 48.031733 842.36134 2.2696587 736.00514 -9.0625 614.83398 L 90.332031 614.83398 C 101.66579 709.86749 137.41301 791.82417 197.57227 860.70117 C 197.57227 861.57355 187.54481 872.47214 167.49219 893.39648 L 128.2207 933.89648 z M 788.03711 733.70703 L 788.03711 383.48438 L 884.67969 383.48438 L 884.67969 733.70703 L 788.03711 733.70703 z M -9.0605469 518.05469 C -0.34668559 391.70251 42.335665 282.77107 118.98047 191.25586 C 123.06103 196.11615 144.50066 218.33369 189.72656 264.33984 C 132.1832 335.83217 99.052766 420.40379 90.333984 518.05469 L -9.0605469 518.05469 z M 118.98047 191.25586 C 118.49847 190.68176 115.08964 187.17969 115.18164 187.17969 L 119.10352 191.10352 C 119.06152 191.15352 119.02242 191.20556 118.98047 191.25586 z M 788.03711 281.52734 L 788.03711 -68.697266 L 884.67969 -68.697266 L 884.67969 281.52734 L 788.03711 281.52734 z M 259.04102 191.10352 L 189.72656 121.78906 C 287.37606 38.961745 396.36157 -6.3769172 516.67969 -14.224609 L 516.67969 85.169922 C 423.38885 95.633011 337.5093 130.94478 259.04102 191.10352 z " />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
41
srcs/special_font/155.svg
Normal file
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Accent from Roboto font family (Regular). Apache License, Version 2.0. -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="-20 0 1168 2048"
|
||||
id="svg1"
|
||||
sodipodi:docname="55.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.30430685"
|
||||
inkscape:cx="433.77268"
|
||||
inkscape:cy="368.04955"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<g
|
||||
transform="matrix(1 0 0 -1 0 1536)"
|
||||
id="g1">
|
||||
<path
|
||||
id="path1"
|
||||
d="M 204.5 1464 L 204.5 1318 L 925.5 1318 L 925.5 1464 L 204.5 1464 z M 788.03711 1185.3613 L 788.03711 835.13672 L 884.67969 835.13672 L 884.67969 1185.3613 L 788.03711 1185.3613 z M 516.67773 1130.8906 C 398.97713 1123.0439 292.60767 1080.3214 197.57227 1002.7246 L 194.95703 1005.3398 C 242.90988 956.51602 266.88672 931.66731 266.88672 930.79492 C 344.48302 990.95352 427.74838 1024.5212 516.67773 1031.4961 L 516.67773 1130.8906 z M 121.71875 938.64258 L 127.9043 933.69531 L 125.64258 936.02734 L 121.71875 938.64258 z M 127.9043 933.69531 L 128.2207 933.36914 C 128.2327 933.38314 128.24581 933.39811 128.25781 933.41211 L 127.9043 933.69531 z M 128.2207 933.36914 C 48.031813 841.83409 2.2696487 735.47762 -9.0625 614.30664 L 90.332031 614.30664 C 101.66578 709.34005 137.41307 791.2969 197.57227 860.17383 C 197.57227 861.04621 187.54479 871.94482 167.49219 892.86914 L 128.2207 933.36914 z M 788.03711 733.17969 L 788.03711 382.95703 L 884.67969 382.95703 L 884.67969 733.17969 L 788.03711 733.17969 z M -9.0605469 517.52734 C -0.34669559 391.17527 42.335735 282.24362 118.98047 190.72852 C 123.06102 195.58871 144.50071 217.80645 189.72656 263.8125 C 132.18326 335.30483 99.052766 419.87654 90.333984 517.52734 L -9.0605469 517.52734 z M 118.98047 190.72852 C 118.49847 190.15442 115.08964 186.65234 115.18164 186.65234 L 119.10352 190.57617 C 119.06152 190.62617 119.02242 190.67822 118.98047 190.72852 z M 788.03711 281 L 788.03711 -69.224609 L 884.67969 -69.224609 L 884.67969 281 L 788.03711 281 z M 259.04102 190.57617 L 189.72656 121.26172 C 287.37596 38.434402 396.36169 -6.904261 516.67969 -14.751953 L 516.67969 84.642578 C 423.38894 95.105668 337.50922 130.41753 259.04102 190.57617 z " />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
41
srcs/special_font/156.svg
Normal file
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Accent from Roboto font family (Regular). Apache License, Version 2.0. -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="-20 0 1168 2048"
|
||||
id="svg1"
|
||||
sodipodi:docname="56.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.53396301"
|
||||
inkscape:cx="475.68839"
|
||||
inkscape:cy="1151.7652"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<g
|
||||
transform="matrix(1 0 0 -1 0 1536)"
|
||||
id="g1">
|
||||
<path
|
||||
id="path1"
|
||||
d="M 554 1581 C 505.33338 1581 463.8333 1564.8333 429.5 1532.5 C 395.1667 1500.1667 378 1460 378 1412 C 378 1364 395.00003 1324.6667 429 1294 C 462.99997 1263.3333 504.66672 1248 554 1248 C 601.99995 1248 642.83336 1263.1667 676.5 1293.5 C 710.16664 1323.8333 727 1363.3333 727 1412 C 727 1460 710.16664 1500.1667 676.5 1532.5 C 642.83336 1564.8333 601.99995 1581 554 1581 z M 554 1489 C 573.99998 1489 591.16668 1481.5 605.5 1466.5 C 619.83332 1451.5 627 1433.3333 627 1412 C 627 1390.6667 619.83332 1373 605.5 1359 C 591.16668 1345 573.99998 1338 554 1338 C 533.33335 1338 515.49999 1345.1667 500.5 1359.5 C 485.50002 1373.8333 478 1391.3333 478 1412 C 478 1433.3333 485.33334 1451.5 500 1466.5 C 514.66666 1481.5 532.66669 1489 554 1489 z M 788.03711 1185.4902 L 788.03711 835.26562 L 884.67969 835.26562 L 884.67969 1185.4902 L 788.03711 1185.4902 z M 516.67773 1131.0195 C 398.97725 1123.1728 292.60757 1080.4502 197.57227 1002.8535 L 194.95703 1005.4688 C 242.90983 956.64502 266.88672 931.79622 266.88672 930.92383 C 344.48294 991.08237 427.74852 1024.6501 516.67773 1031.625 L 516.67773 1131.0195 z M 121.71875 938.77148 L 127.9043 933.82422 L 125.64258 936.15625 L 121.71875 938.77148 z M 127.9043 933.82422 L 128.2207 933.49805 C 128.2327 933.51205 128.24581 933.52702 128.25781 933.54102 L 127.9043 933.82422 z M 128.2207 933.49805 C 48.031893 841.96309 2.2696387 735.60645 -9.0625 614.43555 L 90.332031 614.43555 C 101.66577 709.4689 137.41313 791.42587 197.57227 860.30273 C 197.57227 861.17511 187.54477 872.07375 167.49219 892.99805 L 128.2207 933.49805 z M 788.03711 733.30859 L 788.03711 383.08594 L 884.67969 383.08594 L 884.67969 733.30859 L 788.03711 733.30859 z M -9.0605469 517.65625 C -0.34670559 391.30438 42.335805 282.37243 118.98047 190.85742 C 123.06101 195.71762 144.50076 217.93535 189.72656 263.94141 C 132.18332 335.43363 99.052766 420.00555 90.333984 517.65625 L -9.0605469 517.65625 z M 118.98047 190.85742 C 118.49847 190.28332 115.08964 186.78125 115.18164 186.78125 L 119.10352 190.70508 C 119.06152 190.75508 119.02242 190.80712 118.98047 190.85742 z M 788.03711 281.12891 L 788.03711 -69.095703 L 884.67969 -69.095703 L 884.67969 281.12891 L 788.03711 281.12891 z M 259.04102 190.70508 L 189.72656 121.39062 C 287.37586 38.563408 396.36181 -6.7753547 516.67969 -14.623047 L 516.67969 84.771484 C 423.38898 95.234574 337.50914 130.54644 259.04102 190.70508 z " />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.5 KiB |
41
srcs/special_font/157.svg
Normal file
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Accent from Roboto font family (Regular). Apache License, Version 2.0. -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="-20 0 1168 2048"
|
||||
id="svg1"
|
||||
sodipodi:docname="57.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.39618502"
|
||||
inkscape:cx="355.89432"
|
||||
inkscape:cy="224.64252"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<g
|
||||
transform="matrix(1 0 0 -1 0 1536)"
|
||||
id="g1">
|
||||
<path
|
||||
id="path1"
|
||||
d="M 794 1554 C 794 1522.6667 783.99998 1496.1667 764 1474.5 C 744.00002 1452.8333 720.3333 1442 693 1442 C 658.33336 1442 612.99994 1457.6667 557 1489 C 501.00006 1520.3333 454.33329 1536 417 1536 C 356.33339 1536 306.33329 1513.1667 267 1467.5 C 227.66671 1421.8333 208 1367.9999 208 1306 L 316 1280 C 316 1310.6667 325.66669 1336.8333 345 1358.5 C 364.33331 1380.1667 388.33336 1391 417 1391 C 450.99997 1391 493.66672 1375.5 545 1344.5 C 596.33328 1313.5 645.66672 1298 693 1298 C 752.99994 1298 802.83337 1319.6667 842.5 1363 C 882.16663 1406.3333 902 1459.3334 902 1522 L 794 1554 z M 788.03711 1185.2617 L 788.03711 835.03711 L 884.67969 835.03711 L 884.67969 1185.2617 L 788.03711 1185.2617 z M 516.67773 1130.791 C 398.97725 1122.9443 292.60757 1080.2217 197.57227 1002.625 L 194.95703 1005.2402 C 242.90983 956.4165 266.88672 931.5677 266.88672 930.69531 C 344.48294 990.85385 427.74847 1024.4216 516.67773 1031.3965 L 516.67773 1130.791 z M 121.71875 938.54297 L 127.9043 933.5957 L 125.64258 935.92773 L 121.71875 938.54297 z M 127.9043 933.5957 L 128.2207 933.26953 C 128.2327 933.28353 128.24581 933.2985 128.25781 933.3125 L 127.9043 933.5957 z M 128.2207 933.26953 C 48.031893 841.73457 2.2696387 735.37793 -9.0625 614.20703 L 90.332031 614.20703 C 101.66577 709.24044 137.41313 791.19736 197.57227 860.07422 C 197.57227 860.9466 187.54477 871.84523 167.49219 892.76953 L 128.2207 933.26953 z M 788.03711 733.08008 L 788.03711 382.85742 L 884.67969 382.85742 L 884.67969 733.08008 L 788.03711 733.08008 z M -9.0605469 517.42773 C -0.34670859 391.07586 42.335805 282.14391 118.98047 190.62891 C 123.06101 195.4891 144.50076 217.70684 189.72656 263.71289 C 132.18332 335.20512 99.052766 419.77703 90.333984 517.42773 L -9.0605469 517.42773 z M 118.98047 190.62891 C 118.49847 190.05481 115.08964 186.55273 115.18164 186.55273 L 119.10352 190.47656 C 119.06152 190.52656 119.02242 190.57861 118.98047 190.62891 z M 788.03711 280.90039 L 788.03711 -69.324219 L 884.67969 -69.324219 L 884.67969 280.90039 L 788.03711 280.90039 z M 259.04102 190.47656 L 189.72656 121.16211 C 287.37586 38.334892 396.36181 -7.0038703 516.67969 -14.851562 L 516.67969 84.542969 C 423.38903 95.006058 337.50914 130.31792 259.04102 190.47656 z " />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.3 KiB |
41
srcs/special_font/158.svg
Normal file
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Accent from Roboto font family (Regular). Apache License, Version 2.0. -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="-20 0 1168 2048"
|
||||
id="svg1"
|
||||
sodipodi:docname="58.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.45672531"
|
||||
inkscape:cx="477.31097"
|
||||
inkscape:cy="821.06244"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<g
|
||||
transform="matrix(1 0 0 -1 0 1536)"
|
||||
id="g1">
|
||||
<path
|
||||
id="path1"
|
||||
d="M 211 1483 L 211 1283 L 430 1283 L 430 1483 L 211 1483 z M 681 1483 L 681 1283 L 900 1283 L 900 1483 L 681 1483 z M 788.03711 1185.3984 L 788.03711 835.17383 L 884.67969 835.17383 L 884.67969 1185.3984 L 788.03711 1185.3984 z M 516.67773 1130.9277 C 398.97725 1123.081 292.60757 1080.3584 197.57227 1002.7617 L 194.95703 1005.377 C 242.90983 956.55322 266.88672 931.70442 266.88672 930.83203 C 344.48294 990.99057 427.74847 1024.5583 516.67773 1031.5332 L 516.67773 1130.9277 z M 121.71875 938.67969 L 127.9043 933.73242 L 125.64258 936.06445 L 121.71875 938.67969 z M 127.9043 933.73242 L 128.2207 933.40625 C 128.2327 933.42025 128.24581 933.43522 128.25781 933.44922 L 127.9043 933.73242 z M 128.2207 933.40625 C 48.031893 841.87129 2.2696387 735.51465 -9.0625 614.34375 L 90.332031 614.34375 C 101.66577 709.37715 137.41313 791.33408 197.57227 860.21094 C 197.57227 861.08332 187.54477 871.98195 167.49219 892.90625 L 128.2207 933.40625 z M 788.03711 733.2168 L 788.03711 382.99414 L 884.67969 382.99414 L 884.67969 733.2168 L 788.03711 733.2168 z M -9.0605469 517.56445 C -0.34670859 391.21258 42.335805 282.28063 118.98047 190.76562 C 123.06101 195.62582 144.50076 217.84356 189.72656 263.84961 C 132.18332 335.34184 99.052766 419.91375 90.333984 517.56445 L -9.0605469 517.56445 z M 118.98047 190.76562 C 118.49847 190.19153 115.08964 186.68945 115.18164 186.68945 L 119.10352 190.61328 C 119.06152 190.66328 119.02242 190.71533 118.98047 190.76562 z M 788.03711 281.03711 L 788.03711 -69.1875 L 884.67969 -69.1875 L 884.67969 281.03711 L 788.03711 281.03711 z M 259.04102 190.61328 L 189.72656 121.29883 C 287.37586 38.471611 396.36181 -6.8671516 516.67969 -14.714844 L 516.67969 84.679688 C 423.38903 95.142777 337.50914 130.45464 259.04102 190.61328 z " />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.9 KiB |
39
srcs/special_font/159.svg
Normal file
@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="-20 0 1168 2048"
|
||||
id="svg1"
|
||||
sodipodi:docname="59.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.46013612"
|
||||
inkscape:cx="608.51559"
|
||||
inkscape:cy="660.67407"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<g
|
||||
transform="matrix(1 0 0 -1 0 1536)"
|
||||
id="g1">
|
||||
<path
|
||||
id="path1"
|
||||
d="M 788.03711 1185.4375 L 788.03711 835.21289 L 884.67969 835.21289 L 884.67969 1185.4375 L 788.03711 1185.4375 z M 516.67773 1130.9668 C 398.97725 1123.1201 292.60757 1080.3975 197.57227 1002.8008 L 194.95703 1005.416 C 242.90983 956.59228 266.88672 931.74348 266.88672 930.87109 C 344.48294 991.02963 427.74847 1024.5974 516.67773 1031.5723 L 516.67773 1130.9668 z M 121.71875 938.71875 L 127.9043 933.77148 L 125.64258 936.10352 L 121.71875 938.71875 z M 127.9043 933.77148 L 128.2207 933.44531 C 128.2327 933.45931 128.24581 933.47428 128.25781 933.48828 L 127.9043 933.77148 z M 128.2207 933.44531 C 48.031893 841.91036 2.2696387 735.55369 -9.0625 614.38281 L 90.332031 614.38281 C 101.66577 709.41622 137.41313 791.37317 197.57227 860.25 C 197.57227 861.1224 187.54477 872.02103 167.49219 892.94531 L 128.2207 933.44531 z M 788.03711 733.25586 L 788.03711 383.0332 L 884.67969 383.0332 L 884.67969 733.25586 L 788.03711 733.25586 z M -9.0605469 517.60352 C -0.34670859 391.25164 42.335805 282.3197 118.98047 190.80469 C 123.06101 195.66488 144.50076 217.88262 189.72656 263.88867 C 132.18332 335.3809 99.052766 419.95281 90.333984 517.60352 L -9.0605469 517.60352 z M 118.98047 190.80469 C 118.49847 190.23059 115.08964 186.72852 115.18164 186.72852 L 119.10352 190.65234 C 119.06152 190.70234 119.02242 190.75439 118.98047 190.80469 z M 788.03711 281.07617 L 788.03711 -14.900391 C 764.18598 -32.716589 743.96402 -51.406452 727.5 -71 C 687.16671 -118.99995 667 -169.66672 667 -223 C 667 -288.99993 687.16671 -340.33337 727.5 -377 C 767.83329 -413.66663 819.66673 -432 883 -432 C 922.99996 -432 957.50003 -427.83332 986.5 -419.5 C 1015.5 -411.16668 1042 -400.66666 1066 -388 L 1033 -265 C 1015.6667 -272.33332 999.33331 -278.50001 984 -283.5 C 968.66669 -288.49999 951.99998 -291 934 -291 C 900.00003 -291 875.49999 -282.99998 860.5 -267 C 845.50001 -251.00002 838 -228.99997 838 -201 C 838 -165.00004 851.1667 -131.16664 877.5 -99.5 C 903.8333 -67.833365 940.33338 -34.666632 987 0 L 915 57 C 904.55355 52.39369 894.45123 47.70424 884.67969 42.935547 L 884.67969 281.07617 L 788.03711 281.07617 z M 259.04102 190.65234 L 189.72656 121.33789 C 287.37586 38.510673 396.36181 -6.8280891 516.67969 -14.675781 L 516.67969 84.71875 C 423.38903 95.18184 337.50914 130.4937 259.04102 190.65234 z " />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.3 KiB |
40
srcs/special_font/15A.svg
Normal file
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="-20 0 1168 2048"
|
||||
id="svg1"
|
||||
sodipodi:docname="5A.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.37732464"
|
||||
inkscape:cx="-129.86165"
|
||||
inkscape:cy="667.85991"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g1" />
|
||||
<g
|
||||
transform="matrix(1 0 0 -1 0 1536)"
|
||||
id="g1">
|
||||
<path
|
||||
id="path1"
|
||||
d="M 430 1484 L 430 1283 L 648 1283 L 648 1484 L 430 1484 z M 788.03711 1185.416 L 788.03711 835.19141 L 884.67969 835.19141 L 884.67969 1185.416 L 788.03711 1185.416 z M 516.67773 1130.9453 C 398.97652 1123.0986 292.60817 1080.3765 197.57227 1002.7793 L 194.95703 1005.3945 C 242.91011 956.57037 266.88672 931.722 266.88672 930.84961 C 344.48341 991.00851 427.74788 1024.5759 516.67773 1031.5508 L 516.67773 1130.9453 z M 121.71875 938.69727 L 127.9043 933.75 L 125.64258 936.08203 L 121.71875 938.69727 z M 127.9043 933.75 L 128.2207 933.42383 C 128.23324 933.43814 128.24527 933.45248 128.25781 933.4668 L 127.9043 933.75 z M 128.2207 933.42383 C 48.031429 841.88827 2.2697163 735.53293 -9.0625 614.36133 L 90.332031 614.36133 C 101.66582 709.39523 137.4128 791.35125 197.57227 860.22852 C 197.57227 861.10091 187.5449 871.99938 167.49219 892.92383 L 128.2207 933.42383 z M 788.03711 733.23438 L 788.03711 383.01172 L 884.67969 383.01172 L 884.67969 733.23438 L 788.03711 733.23438 z M -9.0605469 517.58203 C -0.34660748 391.22954 42.335356 282.29867 118.98047 190.7832 C 123.06106 195.64351 144.50052 217.86093 189.72656 263.86719 C 132.18302 335.35979 99.052776 419.9308 90.333984 517.58203 L -9.0605469 517.58203 z M 118.98047 190.7832 C 118.49846 190.20909 115.08955 186.70703 115.18164 186.70703 L 119.10352 190.63086 C 119.06141 190.6811 119.02256 190.73295 118.98047 190.7832 z M 788.03711 281.05469 L 788.03711 -69.169922 L 884.67969 -69.169922 L 884.67969 281.05469 L 788.03711 281.05469 z M 259.04102 190.63086 L 189.72656 121.31641 C 287.37646 38.488822 396.36114 -6.8496068 516.67969 -14.697266 L 516.67969 84.697266 C 423.38845 95.160388 337.50961 130.47205 259.04102 190.63086 z " />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
39
srcs/special_font/15B.svg
Normal file
@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="-20 0 1184 2048"
|
||||
id="svg1"
|
||||
sodipodi:docname="5B.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.58198807"
|
||||
inkscape:cx="-51.547448"
|
||||
inkscape:cy="554.99419"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g1" />
|
||||
<g
|
||||
transform="matrix(1 0 0 -1 0 1536)"
|
||||
id="g1">
|
||||
<path
|
||||
id="path1"
|
||||
d="M 530 1545 L 346 1279 L 503 1279 L 743 1540 L 741 1545 L 530 1545 z M 856 1545 L 615 1284 L 617 1279 L 788 1279 L 1088 1539 L 1085 1545 L 856 1545 z M 788.03711 1185.6328 L 788.03711 835.4082 L 884.67969 835.4082 L 884.67969 1185.6328 L 788.03711 1185.6328 z M 516.67773 1131.1621 C 398.97665 1123.3154 292.60807 1080.5932 197.57227 1002.9961 L 194.95703 1005.6113 C 242.91008 956.78728 266.88672 931.93881 266.88672 931.06641 C 344.48334 991.22525 427.74802 1024.7927 516.67773 1031.7676 L 516.67773 1131.1621 z M 121.71875 938.91406 L 127.9043 933.9668 L 125.64258 936.29883 L 121.71875 938.91406 z M 127.9043 933.9668 L 128.2207 933.64062 C 128.2327 933.65462 128.24581 933.66959 128.25781 933.68359 L 127.9043 933.9668 z M 128.2207 933.64062 C 48.031483 842.10519 2.2696887 735.7496 -9.0625 614.57812 L 90.332031 614.57812 C 101.66582 709.61193 137.41283 791.56811 197.57227 860.44531 C 197.57227 861.3177 187.54487 872.2162 167.49219 893.14062 L 128.2207 933.64062 z M 788.03711 733.45117 L 788.03711 383.22852 L 884.67969 383.22852 L 884.67969 733.45117 L 788.03711 733.45117 z M -9.0605469 517.79883 C -0.34665559 391.44635 42.335445 282.51541 118.98047 191 C 123.06106 195.8603 144.50051 218.07773 189.72656 264.08398 C 132.18302 335.57651 99.052776 420.14763 90.333984 517.79883 L -9.0605469 517.79883 z M 118.98047 191 C 118.49847 190.4259 115.08964 186.92383 115.18164 186.92383 L 119.10352 190.84766 C 119.06152 190.89766 119.02247 190.9497 118.98047 191 z M 788.03711 281.27148 L 788.03711 -68.953125 L 884.67969 -68.953125 L 884.67969 281.27148 L 788.03711 281.27148 z M 259.04102 190.84766 L 189.72656 121.5332 C 287.37636 38.705686 396.36121 -6.6327766 516.67969 -14.480469 L 516.67969 84.914062 C 423.38858 95.377152 337.50954 130.68882 259.04102 190.84766 z " />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
35
srcs/special_font/15C.svg
Normal file
@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="-20 0 2068 2048"
|
||||
id="svg1"
|
||||
sodipodi:docname="5C.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.35727934"
|
||||
inkscape:cx="487.01389"
|
||||
inkscape:cy="1116.7732"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<path
|
||||
id="path1"
|
||||
d="M 859 327 L 847.23828 350.84375 L 788.03711 350.84375 L 788.03711 470.84766 L 332.91602 1393.4121 C 307.63186 1379.6959 282.94923 1363.9585 259.04102 1345.6289 L 189.72656 1414.9434 C 221.4138 1441.8208 254.31629 1464.6838 288.39062 1483.666 L 195.91211 1671.127 L 325 1671 L 395.0625 1528.9902 C 434.23639 1540.8294 474.75335 1548.2224 516.67969 1550.957 L 516.67969 1451.5625 C 490.70085 1448.6488 465.35862 1443.6034 440.5293 1436.8359 L 803.53125 701.06836 L 884.67969 701.06836 L 884.67969 536.58789 L 988.02539 327.11719 L 859 327 z M 516.67773 405.31445 C 398.97685 413.16115 292.60797 455.88345 197.57227 533.48047 L 194.95703 530.86523 C 242.91008 579.68919 266.88672 604.53776 266.88672 605.41016 C 344.48324 545.25142 427.74812 511.68388 516.67773 504.70898 L 516.67773 405.31445 z M 121.71875 597.5625 L 127.9043 602.50977 L 125.64258 600.17773 L 121.71875 597.5625 z M 127.9043 602.50977 L 128.2207 602.83594 C 128.2327 602.82194 128.24581 602.80697 128.25781 602.79297 L 127.9043 602.50977 z M 128.2207 602.83594 C 48.031583 694.37125 2.2696887 800.72706 -9.0625 921.89844 L 90.332031 921.89844 C 101.66582 826.86473 137.41283 744.90838 197.57227 676.03125 C 197.57227 675.15885 187.54487 664.26032 167.49219 643.33594 L 128.2207 602.83594 z M 788.03711 803.02539 L 788.03711 1153.248 L 884.67969 1153.248 L 884.67969 803.02539 L 788.03711 803.02539 z M -9.0605469 1018.6777 C -0.34675559 1145.0301 42.335445 1253.9613 118.98047 1345.4766 C 123.06106 1340.6163 144.50051 1318.3988 189.72656 1272.3926 C 132.18302 1200.9001 99.052776 1116.3288 90.333984 1018.6777 L -9.0605469 1018.6777 z M 118.98047 1345.4766 C 118.49847 1346.0507 115.08964 1349.5527 115.18164 1349.5527 L 119.10352 1345.6289 C 119.06152 1345.5789 119.02247 1345.5269 118.98047 1345.4766 z M 788.03711 1255.2051 L 788.03711 1605.4297 L 884.67969 1605.4297 L 884.67969 1255.2051 L 788.03711 1255.2051 z " />
|
||||
</svg>
|
After Width: | Height: | Size: 2.9 KiB |
35
srcs/special_font/15D.svg
Normal file
@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="-20 0 2068 2048"
|
||||
id="svg1"
|
||||
sodipodi:docname="5D.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.62756232"
|
||||
inkscape:cx="627.8261"
|
||||
inkscape:cy="640.57383"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<path
|
||||
id="path1"
|
||||
d="M 648.50391 102.80469 C 665.95442 139.28078 695.10226 173.54949 735.94922 205.61133 L 197.83203 205.61133 L 197.83203 242.91797 L 735.94922 242.91797 C 695.29759 275.16974 666.14976 309.56907 648.50391 346.11523 L 687.38281 346.11523 C 737.74609 294.33536 807.73007 256.89125 897.33398 233.7832 L 897.33398 215.13672 C 807.59067 192.08467 737.60669 154.64057 687.38281 102.80469 L 648.50391 102.80469 z M 788.03711 350.66797 L 788.03711 700.89258 L 884.67969 700.89258 L 884.67969 350.66797 L 788.03711 350.66797 z M 516.67773 405.13867 C 398.97677 412.98536 292.60797 455.70767 197.57227 533.30469 L 194.95703 530.68945 C 242.91003 579.51342 266.88672 604.36198 266.88672 605.23438 C 344.48326 545.0756 427.74811 511.5081 516.67773 504.5332 L 516.67773 405.13867 z M 121.71875 597.38672 L 127.9043 602.33398 L 125.64258 600.00195 L 121.71875 597.38672 z M 127.9043 602.33398 L 128.2207 602.66016 C 128.2327 602.64616 128.24581 602.63119 128.25781 602.61719 L 127.9043 602.33398 z M 128.2207 602.66016 C 48.031563 694.19549 2.2696777 800.5513 -9.0625 921.72266 L 90.332031 921.72266 C 101.66581 826.68894 137.41289 744.7326 197.57227 675.85547 C 197.57227 674.98308 187.54485 664.08456 167.49219 643.16016 L 128.2207 602.66016 z M 788.03711 802.84961 L 788.03711 1153.0723 L 884.67969 1153.0723 L 884.67969 802.84961 L 788.03711 802.84961 z M -9.0605469 1018.502 C -0.34666459 1144.8543 42.335515 1253.7855 118.98047 1345.3008 C 123.06105 1340.4405 144.50056 1318.2231 189.72656 1272.2168 C 132.18308 1200.7244 99.052776 1116.1531 90.333984 1018.502 L -9.0605469 1018.502 z M 118.98047 1345.3008 C 118.49847 1345.8749 115.08964 1349.377 115.18164 1349.377 L 119.10352 1345.4531 C 119.06152 1345.4031 119.02242 1345.3511 118.98047 1345.3008 z M 788.03711 1255.0293 L 788.03711 1605.2539 L 884.67969 1605.2539 L 884.67969 1255.0293 L 788.03711 1255.0293 z M 259.04102 1345.4531 L 189.72656 1414.7676 C 287.37626 1497.595 396.36133 1542.9336 516.67969 1550.7812 L 516.67969 1451.3867 C 423.38867 1440.9236 337.50946 1405.612 259.04102 1345.4531 z " />
|
||||
</svg>
|
After Width: | Height: | Size: 3.0 KiB |
39
srcs/special_font/15E.svg
Normal file
@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="-20 0 1168 2048"
|
||||
id="svg1"
|
||||
sodipodi:docname="5E.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.40851537"
|
||||
inkscape:cx="851.86512"
|
||||
inkscape:cy="670.72139"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<g
|
||||
transform="matrix(1 0 0 -1 0 1536)"
|
||||
id="g1">
|
||||
<path
|
||||
id="path1"
|
||||
d="M 282 1496 C 282 1416.0001 309.66673 1351.3333 365 1302 C 420.33327 1252.6667 492.66676 1228 582 1228 C 671.33324 1228 743.50005 1252.5 798.5 1301.5 C 853.49995 1350.5 881 1415.3334 881 1496 L 731 1496 C 731 1448.6667 717.8333 1412 691.5 1386 C 665.1667 1360 628.66662 1347 582 1347 C 533.33338 1347 496.3333 1360.1667 471 1386.5 C 445.6667 1412.8333 433 1449.3333 433 1496 L 282 1496 z M 788.03711 1185.3828 L 788.03711 835.1582 L 884.67969 835.1582 L 884.67969 1185.3828 L 788.03711 1185.3828 z M 516.67773 1130.9121 C 398.97677 1123.0654 292.60797 1080.3431 197.57227 1002.7461 L 194.95703 1005.3613 C 242.91003 956.53736 266.88672 931.68881 266.88672 930.81641 C 344.48326 990.97519 427.74811 1024.5427 516.67773 1031.5176 L 516.67773 1130.9121 z M 121.71875 938.66406 L 127.9043 933.7168 L 125.64258 936.04883 L 121.71875 938.66406 z M 127.9043 933.7168 L 128.2207 933.39062 C 128.2327 933.40462 128.24581 933.41959 128.25781 933.43359 L 127.9043 933.7168 z M 128.2207 933.39062 C 48.031566 841.85529 2.2696787 735.49948 -9.0625 614.32812 L 90.332031 614.32812 C 101.66581 709.36184 137.41289 791.31818 197.57227 860.19531 C 197.57227 861.0677 187.54485 871.96623 167.49219 892.89062 L 128.2207 933.39062 z M 788.03711 733.20117 L 788.03711 382.97852 L 884.67969 382.97852 L 884.67969 733.20117 L 788.03711 733.20117 z M -9.0605469 517.54883 C -0.34666559 391.19645 42.33552 282.26531 118.98047 190.75 C 123.06105 195.6103 144.50056 217.82773 189.72656 263.83398 C 132.18308 335.32641 99.052768 419.89773 90.333984 517.54883 L -9.0605469 517.54883 z M 118.98047 190.75 C 118.49847 190.1759 115.08964 186.67383 115.18164 186.67383 L 119.10352 190.59766 C 119.06152 190.64766 119.02242 190.6997 118.98047 190.75 z M 788.03711 281.02148 L 788.03711 -69.203125 L 884.67969 -69.203125 L 884.67969 281.02148 L 788.03711 281.02148 z M 259.04102 190.59766 L 189.72656 121.2832 C 287.37626 38.455786 396.36133 -6.8827766 516.67969 -14.730469 L 516.67969 84.664062 C 423.38867 95.127152 337.50946 130.43882 259.04102 190.59766 z " />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.1 KiB |
35
srcs/special_font/15F.svg
Normal file
@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="-55 0 2103 2048"
|
||||
id="svg1"
|
||||
sodipodi:docname="5F.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.25394675"
|
||||
inkscape:cx="-94.508002"
|
||||
inkscape:cy="1764.1494"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<path
|
||||
id="path1"
|
||||
d="M 787.98633 350.56836 L 787.98633 700.79297 L 884.62891 700.79297 L 884.62891 350.56836 L 787.98633 350.56836 z M 516.62695 405.03906 C 398.92614 412.88575 292.55709 455.60816 197.52148 533.20508 L 194.90625 530.58984 C 242.8592 579.41373 266.83594 604.26237 266.83594 605.13477 C 344.4324 544.97605 427.69745 511.40849 516.62695 504.43359 L 516.62695 405.03906 z M 121.66797 597.28711 L 127.85352 602.23438 L 125.5918 599.90234 L 121.66797 597.28711 z M 127.85352 602.23438 L 128.16992 602.56055 C 128.18192 602.54655 128.19503 602.53158 128.20703 602.51758 L 127.85352 602.23438 z M 128.16992 602.56055 C 81.861876 655.42086 47.107033 713.25568 23.761719 776 L -45 776 L -45 926 L 787.98633 926 L 787.98633 1152.9727 L 884.62891 1152.9727 L 884.62891 926 L 1180 926 L 1180 776 L 131.81445 776 C 148.94241 740.02777 170.65788 706.51229 197.52148 675.75586 C 197.52148 674.88347 187.49405 663.98492 167.44141 643.06055 L 128.16992 602.56055 z M -9.1113281 1018.4023 C -0.39745673 1144.7546 42.284816 1253.686 118.92969 1345.2012 C 123.01026 1340.3409 144.44983 1318.1234 189.67578 1272.1172 C 132.13236 1200.6249 99.001984 1116.0533 90.283203 1018.4023 L -9.1113281 1018.4023 z M 118.92969 1345.2012 C 118.44769 1345.7753 115.03886 1349.2773 115.13086 1349.2773 L 119.05273 1345.3535 C 119.01073 1345.3035 118.97164 1345.2515 118.92969 1345.2012 z M 787.98633 1254.9297 L 787.98633 1605.1543 L 884.62891 1605.1543 L 884.62891 1254.9297 L 787.98633 1254.9297 z M 258.99023 1345.3535 L 189.67578 1414.668 C 287.32538 1497.4953 396.31066 1542.8339 516.62891 1550.6816 L 516.62891 1451.2871 C 423.33797 1440.824 337.4586 1405.5124 258.99023 1345.3535 z " />
|
||||
</svg>
|
After Width: | Height: | Size: 2.6 KiB |
35
srcs/special_font/160.svg
Normal file
@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
viewBox="-20 0 1168 2048"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="60.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.37535628"
|
||||
inkscape:cx="383.63552"
|
||||
inkscape:cy="548.81192"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<path
|
||||
id="path1"
|
||||
d="M 788.69727 486.45312 L 788.69727 836.67773 L 885.33984 836.67773 L 885.33984 486.45312 L 788.69727 486.45312 z M 517.33789 540.92383 C 399.63741 548.77052 293.26773 591.49312 198.23242 669.08984 L 195.61719 666.47461 C 243.56999 715.29834 267.54688 740.14714 267.54688 741.01953 C 345.1431 680.86099 428.40863 647.29325 517.33789 640.31836 L 517.33789 540.92383 z M 122.37891 733.17188 L 128.56445 738.11914 L 126.30273 735.78711 L 122.37891 733.17188 z M 128.56445 738.11914 L 128.88086 738.44531 C 128.89286 738.43131 128.90597 738.41634 128.91797 738.40234 L 128.56445 738.11914 z M 128.88086 738.44531 C 48.692048 829.98027 2.9297945 936.33689 -8.4023438 1057.5078 L 90.992188 1057.5078 C 102.32593 962.47439 138.07328 880.51749 198.23242 811.64062 C 198.23242 810.76825 188.20492 799.86961 168.15234 778.94531 L 128.88086 738.44531 z M 788.69727 938.63477 L 788.69727 1288.8574 L 885.33984 1288.8574 L 885.33984 938.63477 L 788.69727 938.63477 z M -8.4003906 1154.2871 C 0.31344766 1280.639 42.99596 1389.5709 119.64062 1481.0859 C 123.72117 1476.2257 145.16091 1454.008 190.38672 1408.002 C 132.84348 1336.5097 99.712919 1251.9378 90.994141 1154.2871 L -8.4003906 1154.2871 z M 119.64062 1481.0859 C 119.15863 1481.66 115.7498 1485.1621 115.8418 1485.1621 L 119.76367 1481.2383 C 119.72167 1481.1883 119.68257 1481.1362 119.64062 1481.0859 z M 788.69727 1390.8145 L 788.69727 1741.0391 L 885.33984 1741.0391 L 885.33984 1390.8145 L 788.69727 1390.8145 z M 259.70117 1481.2383 L 190.38672 1550.5527 C 288.03602 1633.38 397.02196 1678.7187 517.33984 1686.5664 L 517.33984 1587.1719 C 424.04919 1576.7088 338.16929 1541.3969 259.70117 1481.2383 z M 430 1838 L 430 2039 L 648 2039 L 648 1838 L 430 1838 z " />
|
||||
</svg>
|
After Width: | Height: | Size: 2.7 KiB |
35
srcs/special_font/161.svg
Normal file
@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
viewBox="0 0 1168 2048"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="61.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.48567467"
|
||||
inkscape:cx="413.85729"
|
||||
inkscape:cy="951.25406"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<path
|
||||
id="path1"
|
||||
d="M 896 399.05469 C 856.00004 399.05469 821.49997 403.22137 792.5 411.55469 C 763.50003 419.88801 736.99998 430.38803 713 443.05469 L 746 566.05469 C 763.33331 558.72136 779.66669 552.55468 795 547.55469 C 810.33331 542.55469 827.00002 540.05469 845 540.05469 C 878.99997 540.05469 903.50001 548.0547 918.5 564.05469 C 933.49999 580.05467 941 602.05472 941 630.05469 C 941 666.05465 927.8333 699.88805 901.5 731.55469 C 891.57047 743.49526 880.18776 755.65046 867.36719 768.01758 L 788.08008 768.01758 L 788.08008 1118.2422 L 884.72266 1118.2422 L 884.72266 878.56055 C 958.90913 843.53244 1014.5404 804.03965 1051.5 760.05469 C 1091.8333 712.05474 1112 661.38796 1112 608.05469 C 1112 542.05475 1091.8333 490.72132 1051.5 454.05469 C 1011.1667 417.38805 959.33327 399.05469 896 399.05469 z M 516.7207 822.48828 C 399.02022 830.33497 292.65054 873.05757 197.61523 950.6543 L 195 948.03906 C 242.9528 996.86281 266.92969 1021.7116 266.92969 1022.584 C 344.52591 962.42538 427.79144 928.85771 516.7207 921.88281 L 516.7207 822.48828 z M 121.76172 1014.7363 L 127.94727 1019.6836 L 125.68555 1017.3516 L 121.76172 1014.7363 z M 127.94727 1019.6836 L 128.26367 1020.0098 C 128.27567 1019.9958 128.28878 1019.9808 128.30078 1019.9668 L 127.94727 1019.6836 z M 128.26367 1020.0098 C 48.074862 1111.5447 2.3126074 1217.9014 -9.0195312 1339.0723 L 90.375 1339.0723 C 101.70874 1244.0389 137.45609 1162.0819 197.61523 1093.2051 C 197.61523 1092.3327 187.58774 1081.434 167.53516 1060.5098 L 128.26367 1020.0098 z M 788.08008 1220.1992 L 788.08008 1570.4219 L 884.72266 1570.4219 L 884.72266 1220.1992 L 788.08008 1220.1992 z M -9.0175781 1435.8516 C -0.30373683 1562.2034 42.378774 1671.1354 119.02344 1762.6504 C 123.10398 1757.7902 144.54373 1735.5725 189.76953 1689.5664 C 132.22629 1618.0742 99.095736 1533.5023 90.376953 1435.8516 L -9.0175781 1435.8516 z M 119.02344 1762.6504 C 118.54144 1763.2245 115.13261 1766.7266 115.22461 1766.7266 L 119.14648 1762.8027 C 119.10448 1762.7527 119.06539 1762.7007 119.02344 1762.6504 z M 788.08008 1672.3789 L 788.08008 2022.6035 L 884.72266 2022.6035 L 884.72266 1672.3789 L 788.08008 1672.3789 z M 259.08398 1762.8027 L 189.76953 1832.1172 C 287.41883 1914.9444 396.40478 1960.2832 516.72266 1968.1309 L 516.72266 1868.7363 C 423.432 1858.2732 337.55211 1822.9614 259.08398 1762.8027 z " />
|
||||
</svg>
|
After Width: | Height: | Size: 3.3 KiB |
35
srcs/special_font/162.svg
Normal file
@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
viewBox="-20 0 1168 2048"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="62.combining.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.19331922"
|
||||
inkscape:cx="160.35653"
|
||||
inkscape:cy="1675.9844"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<path
|
||||
id="path1"
|
||||
d="M 457 405.05469 L 450 514.05469 C 497.99995 514.05469 536.6667 522.22137 566 538.55469 C 595.3333 554.888 610 579.38805 610 612.05469 C 610 644.05466 597.99998 666.38803 574 679.05469 C 550.00002 691.72134 508.99994 700.38802 451 705.05469 L 482.48242 837.87305 C 378.30073 851.10971 283.30749 892.62964 197.57227 962.63281 L 194.95703 960.01758 C 242.90983 1008.8413 266.88672 1033.6901 266.88672 1034.5625 C 344.48294 974.40397 427.74847 940.83622 516.67773 933.86133 L 516.67773 840.05469 L 623 840.05469 L 611 788.05469 C 654.33329 780.72136 690.33336 763.38799 719 736.05469 C 747.66664 708.72138 762 668.38796 762 615.05469 C 762 551.05475 735.66662 500.05465 683 462.05469 C 630.33338 424.05473 554.9999 405.05469 457 405.05469 z M 788.03711 779.99609 L 788.03711 1130.2207 L 884.67969 1130.2207 L 884.67969 779.99609 L 788.03711 779.99609 z M 121.71875 1026.7148 L 127.9043 1031.6621 L 125.64258 1029.3301 L 121.71875 1026.7148 z M 127.9043 1031.6621 L 128.2207 1031.9883 C 128.2327 1031.9743 128.24581 1031.9593 128.25781 1031.9453 L 127.9043 1031.6621 z M 128.2207 1031.9883 C 48.031893 1123.5232 2.2696387 1229.8799 -9.0625 1351.0508 L 90.332031 1351.0508 C 101.66577 1256.0174 137.41313 1174.0604 197.57227 1105.1836 C 197.57227 1104.3112 187.54477 1093.4126 167.49219 1072.4883 L 128.2207 1031.9883 z M 788.03711 1232.1777 L 788.03711 1582.4004 L 884.67969 1582.4004 L 884.67969 1232.1777 L 788.03711 1232.1777 z M -9.0605469 1447.8301 C -0.34670859 1574.182 42.335805 1683.1139 118.98047 1774.6289 C 123.06101 1769.7687 144.50076 1747.551 189.72656 1701.5449 C 132.18332 1630.0527 99.052766 1545.4808 90.333984 1447.8301 L -9.0605469 1447.8301 z M 118.98047 1774.6289 C 118.49847 1775.203 115.08964 1778.7051 115.18164 1778.7051 L 119.10352 1774.7812 C 119.06152 1774.7313 119.02242 1774.6792 118.98047 1774.6289 z M 788.03711 1684.3574 L 788.03711 2034.582 L 884.67969 2034.582 L 884.67969 1684.3574 L 788.03711 1684.3574 z M 259.04102 1774.7812 L 189.72656 1844.0957 C 287.37586 1926.9229 396.36181 1972.2617 516.67969 1980.1094 L 516.67969 1880.7148 C 423.38903 1870.2518 337.50914 1834.9399 259.04102 1774.7812 z " />
|
||||
</svg>
|
After Width: | Height: | Size: 3.1 KiB |
42
srcs/special_font/200.svg
Normal file
@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Accent from Roboto font family (Regular). Apache License, Version 2.0. -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
viewBox="-20 0 1168 2048"
|
||||
id="svg1"
|
||||
sodipodi:docname="combining_verticle_tilde.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:zoom="0.86773523"
|
||||
inkscape:cx="371.08093"
|
||||
inkscape:cy="528.96319"
|
||||
inkscape:window-width="2736"
|
||||
inkscape:window-height="1744"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g1"
|
||||
showgrid="false" />
|
||||
<g
|
||||
transform="matrix(1 0 0 -1 0 1536)"
|
||||
id="g1">
|
||||
<path
|
||||
id="path1"
|
||||
d="M 729.01953 1637.9062 C 673.81839 1637.9062 629.59877 1626.6276 596.35938 1604.0723 C 562.52642 1582.1105 545.60938 1551.2451 545.60938 1511.4766 C 545.60938 1475.2694 556.88806 1441.4372 579.44336 1409.9785 C 601.99866 1379.1134 613.27539 1351.5118 613.27539 1327.1758 C 613.27539 1314.1174 607.63703 1301.9495 596.35938 1290.6719 C 584.48816 1279.9878 568.16525 1274.6465 547.39062 1274.6465 L 547.39062 1172.2559 C 669.66411 1172.2559 730.80078 1216.7745 730.80078 1305.8086 C 730.80078 1342.0158 720.71036 1376.145 700.5293 1408.1973 C 679.75468 1440.8431 669.36719 1468.4427 669.36719 1490.998 C 669.36719 1520.6761 689.25097 1535.5156 729.01953 1535.5156 L 729.01953 1637.9062 z M 788.03711 1185.2168 L 788.03711 834.99219 L 884.67969 834.99219 L 884.67969 1185.2168 L 788.03711 1185.2168 z M 516.67773 1130.7461 C 398.97701 1122.8994 292.60777 1080.1769 197.57227 1002.5801 L 194.95703 1005.1953 C 242.90993 956.37148 266.88672 931.52279 266.88672 930.65039 C 344.4831 990.80905 427.74829 1024.3767 516.67773 1031.3516 L 516.67773 1130.7461 z M 121.71875 938.49805 L 127.9043 933.55078 L 125.64258 935.88281 L 121.71875 938.49805 z M 127.9043 933.55078 L 128.2207 933.22461 C 128.2327 933.23861 128.24581 933.25358 128.25781 933.26758 L 127.9043 933.55078 z M 128.2207 933.22461 C 48.031736 841.68946 2.2696574 735.33327 -9.0625 614.16211 L 90.332031 614.16211 C 101.66579 709.19561 137.41301 791.15231 197.57227 860.0293 C 197.57227 860.90169 187.54481 871.80026 167.49219 892.72461 L 128.2207 933.22461 z M 788.03711 733.03516 L 788.03711 382.8125 L 884.67969 382.8125 L 884.67969 733.03516 L 788.03711 733.03516 z M -9.0605469 517.38281 C -0.34668428 391.03067 42.33567 282.0991 118.98047 190.58398 C 123.06103 195.44428 144.50066 217.66175 189.72656 263.66797 C 132.1832 335.16023 99.052758 419.73191 90.333984 517.38281 L -9.0605469 517.38281 z M 118.98047 190.58398 C 118.49847 190.00988 115.08964 186.50781 115.18164 186.50781 L 119.10352 190.43164 C 119.06152 190.48164 119.02242 190.53368 118.98047 190.58398 z M 788.03711 280.85547 L 788.03711 -69.369141 L 884.67969 -69.369141 L 884.67969 280.85547 L 788.03711 280.85547 z M 259.04102 190.43164 L 189.72656 121.11719 C 287.37606 38.28995 396.36157 -7.0488004 516.67969 -14.896484 L 516.67969 84.498047 C 423.38885 94.961125 337.5093 130.27286 259.04102 190.43164 z " />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.5 KiB |