ViaFabricPlus/src/main/java/de/florianmichael/viafabricplus/fixes/data/RenderableGlyphDiff.java

995 lines
58 KiB
Java

/*
* This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus
* Copyright (C) 2021-2024 FlorianMichael/EnZaXD <florian.michael07@gmail.com> and RK_01/RaphiMC
* Copyright (C) 2023-2024 contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.fixes.data;
import de.florianmichael.viafabricplus.protocolhack.ProtocolHack;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.ints.IntConsumer;
import net.raphimc.vialoader.util.VersionEnum;
import static java.util.stream.IntStream.rangeClosed;
import static net.raphimc.vialoader.util.VersionEnum.*;
/**
* Data dump which contains the {@link VersionEnum} for each renderable glyph. This is used to hide characters
* which are not supported by the current protocol version. This is because some servers in older versions are using
* characters which the client doesn't know about and therefore can't render as placeholder for e.g. scoreboards, we have
* to hide them because our client would render them as a different character.
*/
public class RenderableGlyphDiff {
private static final Int2ObjectMap<VersionEnum> RENDERABLE_GLYPH_DIFF_LEGACY = new Int2ObjectOpenHashMap<>();
private static final Int2ObjectMap<VersionEnum> RENDERABLE_GLYPH_DIFF = new Int2ObjectOpenHashMap<>();
static {
rangeClosed(0, 887).forEach(putLegacy(c0_0_15a_1));
rangeClosed(890, 894).forEach(putLegacy(c0_0_15a_1));
rangeClosed(900, 906).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(908, c0_0_15a_1);
rangeClosed(910, 929).forEach(putLegacy(c0_0_15a_1));
rangeClosed(931, 1315).forEach(putLegacy(c0_0_15a_1));
rangeClosed(1329, 1366).forEach(putLegacy(c0_0_15a_1));
rangeClosed(1369, 1418).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(1423, c0_0_15a_1);
rangeClosed(1425, 1479).forEach(putLegacy(c0_0_15a_1));
rangeClosed(1488, 1514).forEach(putLegacy(c0_0_15a_1));
rangeClosed(1520, 1524).forEach(putLegacy(c0_0_15a_1));
rangeClosed(1536, 1539).forEach(putLegacy(c0_0_15a_1));
rangeClosed(1542, 1563).forEach(putLegacy(c0_0_15a_1));
rangeClosed(1566, 1567).forEach(putLegacy(c0_0_15a_1));
rangeClosed(1569, 1630).forEach(putLegacy(c0_0_15a_1));
rangeClosed(1632, 1805).forEach(putLegacy(c0_0_15a_1));
rangeClosed(1807, 1866).forEach(putLegacy(c0_0_15a_1));
rangeClosed(1869, 1969).forEach(putLegacy(c0_0_15a_1));
rangeClosed(1984, 2042).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2305, 2361).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2364, 2381).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2384, 2388).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2392, 2418).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2427, 2431).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2433, 2435).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2437, 2444).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2447, 2448).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2451, 2472).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2474, 2480).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(2482, c0_0_15a_1);
rangeClosed(2486, 2489).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2492, 2500).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2503, 2504).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2507, 2510).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(2519, c0_0_15a_1);
rangeClosed(2524, 2525).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2527, 2531).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2534, 2554).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2561, 2563).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2565, 2570).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2575, 2576).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2579, 2600).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2602, 2608).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2610, 2611).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2613, 2614).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2616, 2617).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(2620, c0_0_15a_1);
rangeClosed(2622, 2626).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2631, 2632).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2635, 2637).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(2641, c0_0_15a_1);
rangeClosed(2649, 2652).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(2654, c0_0_15a_1);
rangeClosed(2662, 2677).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2689, 2691).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2693, 2701).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2703, 2705).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2707, 2728).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2730, 2736).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2738, 2739).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2741, 2745).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2748, 2757).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2759, 2761).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2763, 2765).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(2768, c0_0_15a_1);
rangeClosed(2784, 2787).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2790, 2799).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(2801, c0_0_15a_1);
rangeClosed(2817, 2819).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2821, 2828).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2831, 2832).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2835, 2856).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2858, 2864).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2866, 2867).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2869, 2873).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2876, 2884).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2887, 2888).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2891, 2893).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2902, 2903).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2908, 2909).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2911, 2915).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2918, 2929).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2946, 2947).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2949, 2954).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2958, 2960).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2962, 2965).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2969, 2970).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(2972, c0_0_15a_1);
rangeClosed(2974, 2975).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2979, 2980).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2984, 2986).forEach(putLegacy(c0_0_15a_1));
rangeClosed(2990, 3001).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3006, 3010).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3014, 3016).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3018, 3021).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(3024, c0_0_15a_1);
RENDERABLE_GLYPH_DIFF_LEGACY.put(3031, c0_0_15a_1);
rangeClosed(3046, 3066).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3073, 3075).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3077, 3084).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3086, 3088).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3090, 3112).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3114, 3123).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3125, 3129).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3133, 3140).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3142, 3144).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3146, 3149).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3157, 3158).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3160, 3161).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3168, 3171).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3174, 3183).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3192, 3199).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3202, 3203).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3205, 3212).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3214, 3216).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3218, 3240).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3242, 3251).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3253, 3257).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3260, 3268).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3270, 3272).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3274, 3277).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3285, 3286).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(3294, c0_0_15a_1);
rangeClosed(3296, 3299).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3302, 3311).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3313, 3314).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3330, 3331).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3333, 3340).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3342, 3344).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3346, 3368).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3370, 3385).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3389, 3396).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3398, 3400).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3402, 3405).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(3415, c0_0_15a_1);
rangeClosed(3424, 3427).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3430, 3445).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3449, 3455).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3458, 3459).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3461, 3478).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3482, 3505).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3507, 3515).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(3517, c0_0_15a_1);
rangeClosed(3520, 3526).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(3530, c0_0_15a_1);
rangeClosed(3535, 3540).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(3542, c0_0_15a_1);
rangeClosed(3544, 3551).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3570, 3572).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3585, 3642).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3647, 3675).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3713, 3714).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(3716, c0_0_15a_1);
rangeClosed(3719, 3720).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(3722, c0_0_15a_1);
RENDERABLE_GLYPH_DIFF_LEGACY.put(3725, c0_0_15a_1);
rangeClosed(3732, 3735).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3737, 3743).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3745, 3747).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(3749, c0_0_15a_1);
RENDERABLE_GLYPH_DIFF_LEGACY.put(3751, c0_0_15a_1);
rangeClosed(3754, 3755).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3757, 3769).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3771, 3773).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3776, 3780).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(3782, c0_0_15a_1);
rangeClosed(3784, 3789).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3792, 3801).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3804, 3805).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3840, 3911).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3913, 3948).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3953, 3979).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3984, 3991).forEach(putLegacy(c0_0_15a_1));
rangeClosed(3993, 4028).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4030, 4044).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4046, 4052).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4096, 4249).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4254, 4293).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4304, 4348).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4352, 4441).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4447, 4514).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4520, 4601).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4608, 4680).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4682, 4685).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4688, 4694).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(4696, c0_0_15a_1);
rangeClosed(4698, 4701).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4704, 4744).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4746, 4749).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4752, 4784).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4786, 4789).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4792, 4798).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(4800, c0_0_15a_1);
rangeClosed(4802, 4805).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4808, 4822).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4824, 4880).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4882, 4885).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4888, 4954).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4959, 4988).forEach(putLegacy(c0_0_15a_1));
rangeClosed(4992, 5017).forEach(putLegacy(c0_0_15a_1));
rangeClosed(5024, 5108).forEach(putLegacy(c0_0_15a_1));
rangeClosed(5121, 5750).forEach(putLegacy(c0_0_15a_1));
rangeClosed(5760, 5788).forEach(putLegacy(c0_0_15a_1));
rangeClosed(5792, 5880).forEach(putLegacy(c0_0_15a_1));
rangeClosed(5888, 5900).forEach(putLegacy(c0_0_15a_1));
rangeClosed(5902, 5908).forEach(putLegacy(c0_0_15a_1));
rangeClosed(5920, 5942).forEach(putLegacy(c0_0_15a_1));
rangeClosed(5952, 5971).forEach(putLegacy(c0_0_15a_1));
rangeClosed(5984, 5996).forEach(putLegacy(c0_0_15a_1));
rangeClosed(5998, 6000).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6002, 6003).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6016, 6109).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6112, 6121).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6128, 6137).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6144, 6158).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6160, 6169).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6176, 6263).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6272, 6314).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6400, 6428).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6432, 6443).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6448, 6459).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(6464, c0_0_15a_1);
rangeClosed(6468, 6509).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6512, 6516).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6528, 6569).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6576, 6601).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6608, 6617).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6622, 6683).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6686, 6687).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6912, 6987).forEach(putLegacy(c0_0_15a_1));
rangeClosed(6992, 7036).forEach(putLegacy(c0_0_15a_1));
rangeClosed(7040, 7082).forEach(putLegacy(c0_0_15a_1));
rangeClosed(7086, 7097).forEach(putLegacy(c0_0_15a_1));
rangeClosed(7168, 7223).forEach(putLegacy(c0_0_15a_1));
rangeClosed(7227, 7241).forEach(putLegacy(c0_0_15a_1));
rangeClosed(7245, 7295).forEach(putLegacy(c0_0_15a_1));
rangeClosed(7424, 7654).forEach(putLegacy(c0_0_15a_1));
rangeClosed(7678, 7957).forEach(putLegacy(c0_0_15a_1));
rangeClosed(7960, 7965).forEach(putLegacy(c0_0_15a_1));
rangeClosed(7968, 8005).forEach(putLegacy(c0_0_15a_1));
rangeClosed(8008, 8013).forEach(putLegacy(c0_0_15a_1));
rangeClosed(8016, 8023).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(8025, c0_0_15a_1);
RENDERABLE_GLYPH_DIFF_LEGACY.put(8027, c0_0_15a_1);
RENDERABLE_GLYPH_DIFF_LEGACY.put(8029, c0_0_15a_1);
rangeClosed(8031, 8061).forEach(putLegacy(c0_0_15a_1));
rangeClosed(8064, 8116).forEach(putLegacy(c0_0_15a_1));
rangeClosed(8118, 8132).forEach(putLegacy(c0_0_15a_1));
rangeClosed(8134, 8147).forEach(putLegacy(c0_0_15a_1));
rangeClosed(8150, 8155).forEach(putLegacy(c0_0_15a_1));
rangeClosed(8157, 8175).forEach(putLegacy(c0_0_15a_1));
rangeClosed(8178, 8180).forEach(putLegacy(c0_0_15a_1));
rangeClosed(8182, 8190).forEach(putLegacy(c0_0_15a_1));
rangeClosed(8192, 8292).forEach(putLegacy(c0_0_15a_1));
rangeClosed(8298, 8305).forEach(putLegacy(c0_0_15a_1));
rangeClosed(8308, 8334).forEach(putLegacy(c0_0_15a_1));
rangeClosed(8336, 8340).forEach(putLegacy(c0_0_15a_1));
rangeClosed(8352, 8373).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(8381, c0_0_15a_1);
rangeClosed(8400, 8432).forEach(putLegacy(c0_0_15a_1));
rangeClosed(8448, 8527).forEach(putLegacy(c0_0_15a_1));
rangeClosed(8531, 8584).forEach(putLegacy(c0_0_15a_1));
rangeClosed(8592, 9143).forEach(putLegacy(c0_0_15a_1));
rangeClosed(9145, 9191).forEach(putLegacy(c0_0_15a_1));
rangeClosed(9193, 9194).forEach(putLegacy(c0_0_15a_1));
rangeClosed(9197, 9199).forEach(putLegacy(c0_0_15a_1));
rangeClosed(9204, 9213).forEach(putLegacy(c0_0_15a_1));
rangeClosed(9216, 9254).forEach(putLegacy(c0_0_15a_1));
rangeClosed(9280, 9290).forEach(putLegacy(c0_0_15a_1));
rangeClosed(9312, 9885).forEach(putLegacy(c0_0_15a_1));
rangeClosed(9888, 9916).forEach(putLegacy(c0_0_15a_1));
rangeClosed(9920, 9923).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(9935, c0_0_15a_1);
RENDERABLE_GLYPH_DIFF_LEGACY.put(9960, c0_0_15a_1);
rangeClosed(9985, 9988).forEach(putLegacy(c0_0_15a_1));
rangeClosed(9990, 9993).forEach(putLegacy(c0_0_15a_1));
rangeClosed(9996, 10023).forEach(putLegacy(c0_0_15a_1));
rangeClosed(10025, 10061).forEach(putLegacy(c0_0_15a_1));
rangeClosed(10063, 10066).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(10070, c0_0_15a_1);
rangeClosed(10072, 10078).forEach(putLegacy(c0_0_15a_1));
rangeClosed(10081, 10132).forEach(putLegacy(c0_0_15a_1));
rangeClosed(10136, 10159).forEach(putLegacy(c0_0_15a_1));
rangeClosed(10161, 10174).forEach(putLegacy(c0_0_15a_1));
rangeClosed(10176, 10186).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(10188, c0_0_15a_1);
rangeClosed(10192, 11084).forEach(putLegacy(c0_0_15a_1));
rangeClosed(11088, 11092).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(11096, c0_0_15a_1);
rangeClosed(11264, 11310).forEach(putLegacy(c0_0_15a_1));
rangeClosed(11312, 11358).forEach(putLegacy(c0_0_15a_1));
rangeClosed(11360, 11375).forEach(putLegacy(c0_0_15a_1));
rangeClosed(11377, 11389).forEach(putLegacy(c0_0_15a_1));
rangeClosed(11392, 11498).forEach(putLegacy(c0_0_15a_1));
rangeClosed(11513, 11557).forEach(putLegacy(c0_0_15a_1));
rangeClosed(11568, 11621).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(11631, c0_0_15a_1);
rangeClosed(11648, 11670).forEach(putLegacy(c0_0_15a_1));
rangeClosed(11680, 11686).forEach(putLegacy(c0_0_15a_1));
rangeClosed(11688, 11694).forEach(putLegacy(c0_0_15a_1));
rangeClosed(11696, 11702).forEach(putLegacy(c0_0_15a_1));
rangeClosed(11704, 11710).forEach(putLegacy(c0_0_15a_1));
rangeClosed(11712, 11718).forEach(putLegacy(c0_0_15a_1));
rangeClosed(11720, 11726).forEach(putLegacy(c0_0_15a_1));
rangeClosed(11728, 11734).forEach(putLegacy(c0_0_15a_1));
rangeClosed(11736, 11742).forEach(putLegacy(c0_0_15a_1));
rangeClosed(11744, 11824).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(11829, c0_0_15a_1);
RENDERABLE_GLYPH_DIFF_LEGACY.put(11832, c0_0_15a_1);
RENDERABLE_GLYPH_DIFF_LEGACY.put(11841, c0_0_15a_1);
RENDERABLE_GLYPH_DIFF_LEGACY.put(11851, c0_0_15a_1);
rangeClosed(11904, 11929).forEach(putLegacy(c0_0_15a_1));
rangeClosed(11931, 12019).forEach(putLegacy(c0_0_15a_1));
rangeClosed(12032, 12245).forEach(putLegacy(c0_0_15a_1));
rangeClosed(12272, 12283).forEach(putLegacy(c0_0_15a_1));
rangeClosed(12288, 12351).forEach(putLegacy(c0_0_15a_1));
rangeClosed(12353, 12438).forEach(putLegacy(c0_0_15a_1));
rangeClosed(12441, 12543).forEach(putLegacy(c0_0_15a_1));
rangeClosed(12549, 12589).forEach(putLegacy(c0_0_15a_1));
rangeClosed(12593, 12686).forEach(putLegacy(c0_0_15a_1));
rangeClosed(12688, 12727).forEach(putLegacy(c0_0_15a_1));
rangeClosed(12736, 12771).forEach(putLegacy(c0_0_15a_1));
rangeClosed(12784, 12830).forEach(putLegacy(c0_0_15a_1));
rangeClosed(12832, 12867).forEach(putLegacy(c0_0_15a_1));
rangeClosed(12880, 13054).forEach(putLegacy(c0_0_15a_1));
rangeClosed(13056, 19893).forEach(putLegacy(c0_0_15a_1));
rangeClosed(19904, 40899).forEach(putLegacy(c0_0_15a_1));
rangeClosed(40960, 42124).forEach(putLegacy(c0_0_15a_1));
rangeClosed(42128, 42182).forEach(putLegacy(c0_0_15a_1));
rangeClosed(42240, 42539).forEach(putLegacy(c0_0_15a_1));
rangeClosed(42560, 42591).forEach(putLegacy(c0_0_15a_1));
rangeClosed(42594, 42611).forEach(putLegacy(c0_0_15a_1));
rangeClosed(42620, 42647).forEach(putLegacy(c0_0_15a_1));
rangeClosed(42752, 42892).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(42928, c0_0_15a_1);
rangeClosed(43003, 43051).forEach(putLegacy(c0_0_15a_1));
rangeClosed(43072, 43127).forEach(putLegacy(c0_0_15a_1));
rangeClosed(43136, 43204).forEach(putLegacy(c0_0_15a_1));
rangeClosed(43214, 43225).forEach(putLegacy(c0_0_15a_1));
rangeClosed(43264, 43347).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(43359, c0_0_15a_1);
rangeClosed(43520, 43574).forEach(putLegacy(c0_0_15a_1));
rangeClosed(43584, 43597).forEach(putLegacy(c0_0_15a_1));
rangeClosed(43600, 43609).forEach(putLegacy(c0_0_15a_1));
rangeClosed(43612, 43615).forEach(putLegacy(c0_0_15a_1));
rangeClosed(44032, 55203).forEach(putLegacy(c0_0_15a_1));
rangeClosed(63744, 64045).forEach(putLegacy(c0_0_15a_1));
rangeClosed(64048, 64106).forEach(putLegacy(c0_0_15a_1));
rangeClosed(64112, 64217).forEach(putLegacy(c0_0_15a_1));
rangeClosed(64256, 64262).forEach(putLegacy(c0_0_15a_1));
rangeClosed(64275, 64279).forEach(putLegacy(c0_0_15a_1));
rangeClosed(64285, 64310).forEach(putLegacy(c0_0_15a_1));
rangeClosed(64312, 64316).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(64318, c0_0_15a_1);
rangeClosed(64320, 64321).forEach(putLegacy(c0_0_15a_1));
rangeClosed(64323, 64324).forEach(putLegacy(c0_0_15a_1));
rangeClosed(64326, 64433).forEach(putLegacy(c0_0_15a_1));
rangeClosed(64467, 64831).forEach(putLegacy(c0_0_15a_1));
rangeClosed(64848, 64911).forEach(putLegacy(c0_0_15a_1));
rangeClosed(64914, 64967).forEach(putLegacy(c0_0_15a_1));
rangeClosed(64976, 65021).forEach(putLegacy(c0_0_15a_1));
rangeClosed(65024, 65049).forEach(putLegacy(c0_0_15a_1));
rangeClosed(65056, 65062).forEach(putLegacy(c0_0_15a_1));
rangeClosed(65072, 65106).forEach(putLegacy(c0_0_15a_1));
rangeClosed(65108, 65126).forEach(putLegacy(c0_0_15a_1));
rangeClosed(65128, 65131).forEach(putLegacy(c0_0_15a_1));
rangeClosed(65136, 65140).forEach(putLegacy(c0_0_15a_1));
rangeClosed(65142, 65276).forEach(putLegacy(c0_0_15a_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(65279, c0_0_15a_1);
rangeClosed(65281, 65470).forEach(putLegacy(c0_0_15a_1));
rangeClosed(65474, 65479).forEach(putLegacy(c0_0_15a_1));
rangeClosed(65482, 65487).forEach(putLegacy(c0_0_15a_1));
rangeClosed(65490, 65495).forEach(putLegacy(c0_0_15a_1));
rangeClosed(65498, 65500).forEach(putLegacy(c0_0_15a_1));
rangeClosed(65504, 65510).forEach(putLegacy(c0_0_15a_1));
rangeClosed(65512, 65518).forEach(putLegacy(c0_0_15a_1));
rangeClosed(65529, 65535).forEach(putLegacy(c0_0_15a_1));
rangeClosed(1316, 1327).forEach(putLegacy(r1_16));
RENDERABLE_GLYPH_DIFF_LEGACY.put(4295, r1_16);
RENDERABLE_GLYPH_DIFF_LEGACY.put(4301, r1_16);
rangeClosed(4349, 4351).forEach(putLegacy(r1_16));
RENDERABLE_GLYPH_DIFF_LEGACY.put(8382, r1_16);
RENDERABLE_GLYPH_DIFF_LEGACY.put(9924, r1_16);
RENDERABLE_GLYPH_DIFF_LEGACY.put(9928, r1_16);
rangeClosed(11390, 11391).forEach(putLegacy(r1_16));
rangeClosed(42900, 42901).forEach(putLegacy(r1_16));
rangeClosed(42920, 42921).forEach(putLegacy(r1_16));
rangeClosed(42927, 42927).forEach(putLegacy(r1_16));
RENDERABLE_GLYPH_DIFF_LEGACY.put(42948, r1_16);
RENDERABLE_GLYPH_DIFF_LEGACY.put(42950, r1_16);
rangeClosed(43856, 43857).forEach(putLegacy(r1_16));
RENDERABLE_GLYPH_DIFF_LEGACY.put(43875, r1_16);
rangeClosed(66352, 66378).forEach(putLegacy(r1_16));
RENDERABLE_GLYPH_DIFF_LEGACY.put(127754, r1_16);
RENDERABLE_GLYPH_DIFF_LEGACY.put(127783, r1_16);
RENDERABLE_GLYPH_DIFF_LEGACY.put(128293, r1_16);
rangeClosed(8528, 8530).forEach(putLegacy(r1_16_2));
RENDERABLE_GLYPH_DIFF_LEGACY.put(8585, r1_16_2);
rangeClosed(11242, 11243).forEach(putLegacy(r1_16_2));
RENDERABLE_GLYPH_DIFF_LEGACY.put(127907, r1_16_2);
RENDERABLE_GLYPH_DIFF_LEGACY.put(127993, r1_16_2);
RENDERABLE_GLYPH_DIFF_LEGACY.put(128305, r1_16_2);
RENDERABLE_GLYPH_DIFF_LEGACY.put(128481, r1_16_2);
RENDERABLE_GLYPH_DIFF_LEGACY.put(128737, r1_16_2);
RENDERABLE_GLYPH_DIFF_LEGACY.put(129514, r1_16_2);
RENDERABLE_GLYPH_DIFF_LEGACY.put(129683, r1_16_2);
rangeClosed(8374, 8380).forEach(putLegacy(r1_17_1));
RENDERABLE_GLYPH_DIFF_LEGACY.put(8383, r1_17_1);
RENDERABLE_GLYPH_DIFF_LEGACY.put(9203, r1_17_1);
RENDERABLE_GLYPH_DIFF_LEGACY.put(127830, r1_17_1);
RENDERABLE_GLYPH_DIFF_LEGACY.put(128276, r1_17_1);
RENDERABLE_GLYPH_DIFF_LEGACY.put(129699, r1_17_1);
// 1.20 switched to using Unihex as a main font
rangeClosed(0, 2559).forEach(put(r1_20tor1_20_1));
rangeClosed(2561, 55295).forEach(put(r1_20tor1_20_1));
rangeClosed(61425, 61426).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(61429, r1_20tor1_20_1);
rangeClosed(63744, 65533).forEach(put(r1_20tor1_20_1));
rangeClosed(65536, 72543).forEach(put(r1_20tor1_20_1));
rangeClosed(72704, 73727).forEach(put(r1_20tor1_20_1));
rangeClosed(74650, 74751).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(74863, r1_20tor1_20_1);
rangeClosed(74869, 74879).forEach(put(r1_20tor1_20_1));
rangeClosed(75076, 77823).forEach(put(r1_20tor1_20_1));
rangeClosed(78895, 82943).forEach(put(r1_20tor1_20_1));
rangeClosed(83527, 92159).forEach(put(r1_20tor1_20_1));
rangeClosed(92729, 94207).forEach(put(r1_20tor1_20_1));
rangeClosed(100344, 100351).forEach(put(r1_20tor1_20_1));
rangeClosed(101120, 101631).forEach(put(r1_20tor1_20_1));
rangeClosed(101641, 128124).forEach(put(r1_20tor1_20_1));
rangeClosed(128126, 131069).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(131083, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(131207, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(131209, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(131234, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(131236, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(131276, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(131428, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(131490, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(131603, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(131883, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(131953, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(131969, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(132089, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(132170, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(132361, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(132566, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(132648, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(132726, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(132943, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(133127, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(133178, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(133305, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(133500, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(133533, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(133843, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(133917, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(134047, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(134352, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(134469, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(134625, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(134756, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(134765, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(134805, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(135007, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(135359, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(135681, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(135741, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(135765, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(135796, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(135803, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(135895, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(135908, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(135933, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(135963, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(135990, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(136004, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(136090, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(136132, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(136211, r1_20tor1_20_1);
rangeClosed(136301, 136302).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(136663, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(136775, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(136884, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(136966, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(137026, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(137405, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(137667, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(138326, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(138541, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(138565, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(138594, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(138616, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(138642, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(138652, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(138657, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(138679, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(138720, r1_20tor1_20_1);
rangeClosed(138803, 138804).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(139038, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(139126, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(139258, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(139643, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(139800, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(140062, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(140205, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(141043, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(141403, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(141483, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(141711, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(142008, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(142150, r1_20tor1_20_1);
rangeClosed(142159, 142160).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(142246, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(142365, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(142372, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(142817, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(143798, r1_20tor1_20_1);
rangeClosed(143811, 143812).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(143861, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(144242, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(144336, r1_20tor1_20_1);
rangeClosed(144338, 144339).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(144341, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(144346, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(144351, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(144356, r1_20tor1_20_1);
rangeClosed(144458, 144459).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(144465, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(144485, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(144612, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(144730, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(144788, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(144836, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(144843, r1_20tor1_20_1);
rangeClosed(144952, 144954).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(144967, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(145164, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(145180, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(145215, r1_20tor1_20_1);
rangeClosed(145251, 145252).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(145383, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(145407, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(145444, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(145469, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(146072, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(146559, r1_20tor1_20_1);
rangeClosed(146583, 146584).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(146686, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(146688, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(146702, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(146752, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(146899, r1_20tor1_20_1);
rangeClosed(146937, 146938).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(146979, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(147326, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(147606, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(147715, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(147910, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(147966, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(147982, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(148412, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(149033, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(149157, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(149489, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(149654, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(149737, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(149979, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(150017, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(150093, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(150141, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(150217, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(150358, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(150383, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(150550, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(150804, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(151054, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(151095, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(151146, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(151179, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(151626, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(151637, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(151842, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(151977, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(152013, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(152037, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(152094, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(152140, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(152622, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(152718, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(152793, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(152846, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(152882, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(152930, r1_20tor1_20_1);
rangeClosed(152999, 153000).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(153457, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(153513, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(153524, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(154052, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(154068, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(154327, r1_20tor1_20_1);
rangeClosed(154339, 154340).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(154353, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(154546, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(154699, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(154724, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(155041, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(155182, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(155209, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(155222, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(155234, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(155237, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(155330, r1_20tor1_20_1);
rangeClosed(155351, 155352).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(155368, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(155427, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(155484, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(155604, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(155616, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(155643, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(155660, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(155671, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(155744, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(155885, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(156193, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(156272, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(156294, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(156492, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(156674, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(156813, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(157302, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(157310, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(157360, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(157469, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(157564, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(157917, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(157930, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(158033, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(158063, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(158173, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(158238, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(158296, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(158348, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(158391, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(158463, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(158556, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(158753, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(158761, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(158835, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(158941, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(159296, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(159333, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(159636, r1_20tor1_20_1);
rangeClosed(159734, 159736).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(159988, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(160013, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(160057, r1_20tor1_20_1);
rangeClosed(160730, 160731).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(160766, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(160784, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(160841, r1_20tor1_20_1);
rangeClosed(161300, 161301).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(161329, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(161412, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(161427, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(161550, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(161571, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(161618, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(161970, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(162181, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(162436, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(162739, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(162750, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(162759, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(163000, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(163232, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(163344, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(163503, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(163767, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(163833, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(163978, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(164027, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(164471, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(164482, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(164595, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(164813, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(164872, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(164876, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(164949, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(165227, r1_20tor1_20_1);
rangeClosed(165320, 165321).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(165496, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(165525, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(165591, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(165626, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(165856, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166214, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166217, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166251, r1_20tor1_20_1);
rangeClosed(166279, 166280).forEach(put(r1_20tor1_20_1));
rangeClosed(166330, 166331).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(166336, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166415, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166430, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166441, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166467, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166513, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166553, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166605, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166621, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166628, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166726, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166729, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166734, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166849, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166895, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166983, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166991, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166993, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(166996, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(167184, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(167281, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(167419, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(167439, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(167455, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(167478, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(167561, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(167577, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(167659, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(167730, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(167928, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(168608, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(168625, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(169104, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(169423, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(169599, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(169712, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(169753, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(169808, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(170000, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(170182, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(170610, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(171477, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(171483, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(171541, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(171581, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(171593, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(171658, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(171716, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(171739, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(171753, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(171902, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(171907, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(171916, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(171982, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(172058, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(172079, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(172162, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(172281, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(172432, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(172940, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(173111, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(173553, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(173570, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(173594, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(173746, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(174045, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(174141, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(174331, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(174359, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(174640, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(174646, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(174680, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(176034, r1_20tor1_20_1);
rangeClosed(176423, 176424).forEach(put(r1_20tor1_20_1));
rangeClosed(176439, 176440).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(176621, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(176896, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(176995, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(177007, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(177010, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(177021, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(177156, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(177168, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(177171, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(177249, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(177383, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(177391, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(177398, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(177401, r1_20tor1_20_1);
rangeClosed(177421, 177422).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(177462, r1_20tor1_20_1);
rangeClosed(177582, 177583).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(177587, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(177639, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(177652, r1_20tor1_20_1);
rangeClosed(177692, 177693).forEach(put(r1_20tor1_20_1));
rangeClosed(177702, 177704).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(177706, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(177708, r1_20tor1_20_1);
rangeClosed(177813, 177814).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(177837, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(177901, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(178089, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(178117, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(178150, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(178167, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(178169, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(178172, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(178182, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(178186, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(178204, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(178360, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(178840, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(178887, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(179039, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(179042, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(179068, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(179075, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(179227, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(179575, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(179591, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(179703, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(179753, r1_20tor1_20_1);
rangeClosed(180265, 180266).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(180393, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(180426, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(180693, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(180697, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(180729, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(180860, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(180872, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(180900, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(181015, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(181083, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(181089, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(181092, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(181384, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(181396, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(181399, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(181570, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(181643, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(181779, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(181784, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(181793, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(181801, r1_20tor1_20_1);
rangeClosed(181803, 181805).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(181807, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(181826, r1_20tor1_20_1);
rangeClosed(181834, 181835).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(182060, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(182063, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(182175, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(182209, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(182252, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(182269, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(182489, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(182494, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(182497, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(182515, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(182535, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(182538, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(182557, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(182786, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(182798, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(182909, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(182953, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(182994, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183081, r1_20tor1_20_1);
rangeClosed(183085, 183086).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(183089, r1_20tor1_20_1);
rangeClosed(183096, 183097).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(183099, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183103, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183105, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183114, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183118, r1_20tor1_20_1);
rangeClosed(183130, 183131).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(183140, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183145, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183148, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183151, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183155, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183158, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183160, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183164, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183217, r1_20tor1_20_1);
rangeClosed(183231, 183232).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(183246, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183382, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183391, r1_20tor1_20_1);
rangeClosed(183541, 183542).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(183549, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183551, r1_20tor1_20_1);
rangeClosed(183554, 183555).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(183562, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183688, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183691, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183693, r1_20tor1_20_1);
rangeClosed(183695, 183696).forEach(put(r1_20tor1_20_1));
rangeClosed(183711, 183712).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(183720, r1_20tor1_20_1);
rangeClosed(183725, 183726).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(183765, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183832, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183834, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183843, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183846, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183850, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183932, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183944, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(183955, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(185218, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(185668, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(194692, r1_20tor1_20_1);
RENDERABLE_GLYPH_DIFF.put(194742, r1_20tor1_20_1);
rangeClosed(200413, 200414).forEach(put(r1_20tor1_20_1));
RENDERABLE_GLYPH_DIFF.put(200812, r1_20tor1_20_1);
rangeClosed(917504, 917631).forEach(put(r1_20tor1_20_1));
rangeClosed(917760, 917999).forEach(put(r1_20tor1_20_1));
rangeClosed(1048574, 1048575).forEach(put(r1_20tor1_20_1));
}
/**
* @param codePoint the code point to check
* @return true if the given code point is renderable in the current version of the game
*/
public static boolean isGlyphRenderable(final int codePoint) {
final VersionEnum targetVersion = ProtocolHack.getTargetVersion();
if (targetVersion.isNewerThanOrEqualTo(r1_20tor1_20_1)) { // 1.20 switched to using Unihex as a main font
return !RENDERABLE_GLYPH_DIFF.containsKey(codePoint) || targetVersion.isNewerThanOrEqualTo(RENDERABLE_GLYPH_DIFF.get(codePoint));
} else {
return RENDERABLE_GLYPH_DIFF_LEGACY.containsKey(codePoint) && targetVersion.isNewerThanOrEqualTo(RENDERABLE_GLYPH_DIFF_LEGACY.get(codePoint));
}
}
private static IntConsumer putLegacy(final VersionEnum version) {
return i -> RENDERABLE_GLYPH_DIFF_LEGACY.put(i, version);
}
private static IntConsumer put(final VersionEnum version) {
return i -> RENDERABLE_GLYPH_DIFF.put(i, version);
}
}