Jump to content
The forums have been upgraded and will be undergoing changes within the next 48 hours.

How to bring the RS2014 built-in songs to Learn & Play

Featured Replies

 

Hello everyone,

I'd like to share how to bring the RS2014 built-in songs to the L&P ("Learn & Play") version. But first things first - this post is probably borderline within the rules, but imo it's still within them: besides the L&P, I own the PS4 version and I bought a bunch of Ubisoft's RS cables (even though I used other means via RS_ASIO), so I paid my fair share to the developers and I feel that practicing the original songs on the PC is fair with them. The target audience of my post are people in a similar situation. In case you view it differently, feel free to delete the post, but please don't ban me, I'm acting here in good faith (remember to keep the faith).

Now, if you own neither the original RS2014 nor the console version, then stop here and buy the console version to be fair with the developers.

At this point I assume you have the "songs.psarc" file from the original RS2014 version's installation directory (I am not going to break the rules by sharing it).

MAJOR DISCLAIMER FIRST

The method is not perfect:

  • initially I wanted to rebuild the extracted files without any modifications whatsoever - unfortunately both DLC Builder and Rocksmith Toolkit do modify the files; after trying a couple of approaches I don't believe that such a method exists (that is without modifying the tools, but that would be going too far for me)
  • initially I wanted the arrangement IDs to stay the same - so I could port my progress from my friend's PC; unfortunately it seems that Ubisoft has taken some proactive steps to delist any files with their original arrangement IDs (they wouldn't even appear on the song list)

To summarize: the resulting songs are playable, but not exactly the same as the original ones.

An important note: the use Rocksmith Toolkit is not accidental; my first approach was with DLC Builder, but I found it pretty aggressive (not allowing to build some songs without removal of some notes), so I went with Rocksmith Toolkit instead (tbh I didn't check if it doesn't remove any notes silently, but if it does, then at the very least without any "ERROR: FIX THE ARRANGEMENT" complaints; I simply assumed it doesn't - you know, being an older tool and all).

THE MANUAL METHOD
This method has two major drawbacks:

  • that's a lot of work if you're interested in multiple pieces; true, I've never been interested in bringing all of them, but you know: an engineer encountering an engineering problem... 🥲
  • it's still pretty technical...

if any of these is an issue for you, you can find an automated approach in the next section.

  1. download the Rocksmith Toolkit from GitHub and install it; I used the latest available version (v2.9.2.1)
  2. RS Toolkit > Packer/Unpacker > Unpack the songs.psarc
  3. for each song you're interested in:
    1. if it's alphabetically after ultrasoul, you'd have to convert its sng files to xml (using song2014 in console; if you're interested in arguments, see the attached code); the unpacking fails on jvocals arragement of ultrasoul and consequently all subsequent are not generated either
    2. create a folder for the song; IMPORTANT: its name must be different from any original song's songKey, otherwise the game will hang on play! for example: if you're interested in "poursomesugar" song, then don't name the folder "poursomesugar", but whatever else not conflicting with any other song, for example: "poursomesugardlc"
    3. copy the bnk files from audio/windows
    4. copy respective wem files from audio/windows (now that's not trivial on its own - you'd have to open the bnk file in some hex editor, navigate to 44th byte, select the subsequent 8 bytes, type them in reversed order into programmer's calculator and decode decimal number which is the wem filename; see the attached 44b.png)
    5. copy respective album art from gfxassets (copy all three sizes); the rs2\* training songs don't have any; personally I used the rocksmithintro's album art
    6. copy respective arrangements from songs/arr
    7. copy respective json manifests from manifests/songs
    8. for each manifest regenerate its arrangement ID, otherwise the song will not be discovered! use a random guid and to override the entry's name and its PersistentID to some random guid (see the attached arrid.png)
    9. if it's ultrasoul - I haven't succeeded in displaying its jvocals, but nonetheless I copied assets/ui/lyrics/ultrasoul/lyrics_ultrasoul.dds and the attached glyphs file (generated using DLC Builder) for completeness' sake; that's good enough for me, I never cared about this song anyway
    10. build directory (using packagecreator in console; if you're interested in arguments, see the attached code)

THE AUTOMATED APPROACH
Before jumping into the automation, some more disclaimers:

  1. it's still pretty technical, so some minimal technical knowledge is required: how to install Visual Studio, create a console project, copy my code, set the variables' values and run it - it's not a rocket science, but if it seems too hard, involve a programmer friend
  2. I haven't tested all arrangements of all songs - what I can only guarantee is that they all appear in L&P (I did check if they all appear in RS lol)
  3. I don't know if ultrasoul has its japanese vocals displaying correctly; as mentioned above I failed to display any jvocals in any way; I must have done something wrong, but I never cared about this song anyway, so whatever 🙂
  4. I tested the code with Pc verson of the songs.psarc - when running against Xbox or Playstation version, you might need to introduce some additional changes to the code
  5. THIS IS NOT A PROGRAMMING COURSE - there's no good object-oriented design, SOLID principles, exception handling, unit-testability or whatever to learn here 🥲); in case you're interested, then that's a topic for another time; still, I did clean the code quite a bit so it should be easier to understand...

To the method itself:

  1. download and install Visual Studio (there's a free Community Edition)
  2. download the Rocksmith Toolkit from GitHub and install it; I used the latest available version (v2.9.2.1)
  3. in Visual Studio create a console application and Program.cs with the attached code
  4. set the variables at the beginning of the Main method according to your setup
  5. build the app
  6. copy the attached glyphs file to the build directory
  7. run the app
  8. wait quite a bit; like seriously, go grab a lunch or do the laundry

Some notes:

  • I made generating the arragement IDs deterministic - so the songs receive the same values every time the program is run (technically across different machines, but I didn't test it)
  • I appended the original songKeys with "dlc" - I couldn't use the original ones as the songs would cause the game to freeze on playing them (this took me quite a while to realize)
  • this method seems to import the volumes of the song and preview instead of using the default values - what is a nice bonus (isn't it?)

TWO FINAL NOTES
01. copy the resulting psarc files to Rocksmith's dlc directory (most likely C:\Program Files (x86)\Steam\steamapps\common\Rocksmith2014\dlc)
10. enjoy!


That's all folks!



THE CODE

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using Newtonsoft.Json.Linq;

namespace RSRenamer
{
    internal static class Program
    {
        static void Main()
        {
            // set the variables
            var toolkitDirectory = @"C:\Users\Patryk\Desktop\RocksmithToolkit";
            var songsFilePath = @"C:\Users\Patryk\Desktop\RS2014\songs.psarc";
            var songsFilePlatform = "Pc"; // "Xbox" or "PS3"
            // end of variables

            // roughly check if the variables are set correctly
            var packer = Path.Combine(toolkitDirectory, "packer.exe");
            var sng2014 = Path.Combine(toolkitDirectory, "sng2014.exe");
            var packageCreator = Path.Combine(toolkitDirectory, "packagecreator.exe");
            var ultrasoulGlyphsFile = "lyrics_ultrasoul.glyphs.xml";
            if (!Directory.Exists(toolkitDirectory) || !File.Exists(packer) || !File.Exists(sng2014) || !File.Exists(packageCreator))
            {
                Console.WriteLine("Incorrect rocksmith toolkit directory or missing crucial files.");
                return;
            }
            if (!File.Exists(songsFilePath))
            {
                Console.WriteLine("Songs file doesn't exist.");
                return;
            }
            if (!File.Exists(ultrasoulGlyphsFile))
            {
                Console.WriteLine("Glyphs file was not copied to the output directory.");
                return;
            }

            Console.WriteLine("Unpacking the songs file, it may take a couple of minutes...");
            Run(packer, $"-u -i \"{songsFilePath}\" -o \".\" -u -v RS2014 -f {songsFilePlatform}");
            Console.WriteLine();

            // generated by the packer tool
            var extractedDirectory = $"{Path.GetFileName(songsFilePath).Replace('.', '_')}_RS2014_{songsFilePlatform}";

            // sadly, unpacking fails on ultrasoul's jvocals arrangement (I assume it's not discovered as vocals)
            // and consequently for all subsequent arrangements their respective xml files are missing and therefore:
            // removing the faulty file...
            var faultyFile = Path.Combine(extractedDirectory, "songs", "arr", "ultrasoul_jvocals.sng.xml");
            if (File.Exists(faultyFile))
                File.Delete(faultyFile);

            // ...and regenerating all xml files manually
            Console.WriteLine("Regenerating all xml files, it may also take some time...");
            foreach (var arrangementSng in Directory.GetFiles(Path.Combine(extractedDirectory, "songs", "bin", "generic")))
            {
                var arrangementName = Path.GetFileNameWithoutExtension(arrangementSng);
                var arrangementType = "Guitar";
                if (arrangementName.EndsWith("_bass", StringComparison.InvariantCultureIgnoreCase))
                    arrangementType = "Bass";
                else if (arrangementName.EndsWith("_vocals", StringComparison.InvariantCultureIgnoreCase)
                    || arrangementName.EndsWith("_jvocals", StringComparison.InvariantCultureIgnoreCase))
                    arrangementType = "Vocal";

                Console.Write($"{arrangementName}: ");
                var manifest = Path.Combine(extractedDirectory, "manifests", "songs", $"{arrangementName}.json");
                Run(sng2014, $"-x -i \"{arrangementSng}\" -m \"{manifest}\" -a {arrangementType}");

                // move the generated xml file
                var arrangement = Path.Combine(Path.GetDirectoryName(arrangementSng), $"{arrangementName}.xml");
                File.Move(arrangement, Path.Combine(extractedDirectory, "songs", "arr", Path.GetFileName(arrangement)), true);
            }
            Console.WriteLine();

            // random for generating new arrangement IDs
            // using fixed seed so that everyone running the code ends with the same IDs
            var random = new Random(549799200);
            var outputDirectory = "temp";
            var songKeys = Directory.GetFiles(Path.Combine(extractedDirectory, "gamexblocks", "nsongs"), "*") // get all xblock files
                .Select(Path.GetFileNameWithoutExtension) // take the song key
                .Where(s => !s.EndsWith("_fcp_disk", StringComparison.InvariantCultureIgnoreCase)) // skip those with missing files (RS1 previews?)
                .OrderBy(s => s); // sort alphabetically
            foreach (var songKey in songKeys)
            {
                Console.WriteLine($"Preparing files for {songKey}...");

                // must be different from songKey, otherwise the game will freeze on play!
                var songDirectory = $"{songKey}dlc";
                var workingDirectory = Path.Combine(outputDirectory, songDirectory);

                // copy instead of move, because some files are used more than once
                var filesToCopy = new List<string>();

                // work on an empty workspace; delete if anything is here
                if (Directory.Exists(workingDirectory))
                    Directory.Delete(workingDirectory, true);
                Directory.CreateDirectory(workingDirectory);

                // audio files
                var bnkFiles = new string[]
                {
                    Path.Combine(extractedDirectory, "audio", "windows", $"song_{songKey}.bnk"),
                    Path.Combine(extractedDirectory, "audio", "windows", $"song_{songKey}_preview.bnk")
                };
                filesToCopy.AddRange(bnkFiles);

                var wemFiles = bnkFiles.Select(f =>
                {
                    var buffer = new byte[8];
                    using (var stream = File.Open(f, FileMode.Open, FileAccess.Read))
                    {
                        // well, it's more complex than this in general, but it works for songs.psarc...
                        stream.Seek(44, SeekOrigin.Begin);
                        stream.Read(buffer, 0, 8);
                        var span = buffer.AsSpan(0, 8);
                        var wemNumber = BitConverter.ToInt64(span);

                        return Path.Combine(extractedDirectory, "audio", "windows", $"{wemNumber}.wem");
                    }
                });
                filesToCopy.AddRange(wemFiles);

                // album art
                var albumArtSongKey = songKey;

                // the Rocksmith training songs don't have their album art, so reusing the rocksmith intro's
                if (songKey == "rs2arpeggios" || songKey == "rs2chordnamestress" || songKey == "rs2levelbreak" || songKey == "rs2tails")
                    albumArtSongKey = "rocksmithintro";

                filesToCopy.AddRange(Directory.GetFiles(Path.Combine(extractedDirectory, "gfxassets", "album_art"), $"album_{albumArtSongKey}*"));

                // arrangements
                filesToCopy.AddRange(Directory.GetFiles(Path.Combine(extractedDirectory, "songs", "arr"), $"{songKey}*"));

                // manifests
                var manifestsDirectory = Directory.GetDirectories(Path.Combine(extractedDirectory, "manifests")).Single();
                var manifests = Directory.GetFiles(manifestsDirectory, $"{songKey}*");
                filesToCopy.AddRange(manifests);

                // lyrics assets
                if (songKey == "ultrasoul")
                {
                    filesToCopy.AddRange(Directory.GetFiles(Path.Combine(extractedDirectory, "assets", "ui", "lyrics", songKey)));
                    filesToCopy.Add(ultrasoulGlyphsFile);
                }

                // other files (hsan, model files and graph) are not needed

                // copy all files around
                foreach (var file in filesToCopy)
                {
                    var destFileName = Path.Combine(workingDirectory, Path.GetFileName(file));
                    File.Copy(file, destFileName);
                }

                // modify arrangement IDs (otherwise the game will not even discover the songs!)
                var movedManifests = manifests.Select(m => Path.Combine(workingDirectory, Path.GetFileName(m)));
                foreach (var manifest in movedManifests)
                {
                    var newArrangementID = random.NextGuid().ToString("N");

                    // this probably could be done nicer... I'm not JSON manipulation expert
                    var content = JObject.Parse(File.ReadAllText(manifest));
                    var entry = (JProperty)content["Entries"].Single();

                    // rename the entry itself...
                    entry.Replace(new JProperty(newArrangementID, entry.Value));

                    // ...and its PersistentID attribute
                    content["Entries"][newArrangementID]["Attributes"]["PersistentID"] = new JValue(newArrangementID);

                    File.WriteAllText(manifest, content.ToString());
                }
            }
            Console.WriteLine();

            // build the packages
            Console.WriteLine("Preparing packages, this will again take some time...");
            Run(packageCreator, outputDirectory);

            // move the psarc files up
            foreach (var file in Directory.GetFiles(outputDirectory))
            {
                File.Move(file, Path.GetFileName(file), true);
            }
            Console.WriteLine("Done!");
            Console.WriteLine();

            // cleanup
            Directory.Delete(outputDirectory, true);
            Directory.Delete(extractedDirectory, true);

            // credits
            Console.WriteLine("Enjoy!");
            Console.WriteLine("- Patryk marchewek87");
            Console.WriteLine();
        }

        private static void Run(string program, string arguments)
        {
            var programProcess = Process.Start(program, arguments);
            programProcess.WaitForExit();

            // none of the programs ever failed for me, but just in case...
            if (programProcess.ExitCode != 0)
            {
                throw new Exception($"Something went wrong when running: {Path.GetFileName(program)} {arguments}");
            }
        }

        private static Guid NextGuid(this Random @this)
        {
            Span<byte> bytes = stackalloc byte[16];
            @this.NextBytes(bytes);
            return new Guid(bytes);
        }

        static void OriginalRun()
        {
            var path = @"C:\Users\Patryk\Desktop\RS2014\test\songs_psarc_RS2014_Pc";
            var outpath = @"C:\Users\Patryk\Desktop\RS2014\test\final";
            foreach (var xblock in Directory.GetFiles(Path.Combine(path, "gamexblocks", "nsongs")))
            {
                try
                {
                    var song = Path.GetFileNameWithoutExtension(xblock);

                    // ignore songs with different/missing structure (rs1 previews?)
                    if (song.EndsWith("_fcp_disk", StringComparison.InvariantCultureIgnoreCase))
                    {
                        Console.WriteLine($"Skipping {song}");
                        continue;
                    }

                    Console.WriteLine($"Generating {song}...");

                    // create an empty workspace (delete if anything was there)
                    var outPath = Path.Combine(outpath, song);
                    if (Directory.Exists(outPath))
                    {
                        Directory.Delete(outPath, true);
                    }
                    Directory.CreateDirectory(outPath);

                    // xblock file
                    var dest = Path.Combine(outPath, "gamexblocks", "nsongs");
                    Directory.CreateDirectory(dest);
                    File.Copy(xblock, Path.Combine(dest, Path.GetFileName(xblock)));

                    // audio files
                    dest = Path.Combine(outPath, "audio", "windows");
                    Directory.CreateDirectory(dest);
                    var songFiles = new[]
                    {
                        Path.Combine(path, "audio", "windows", $"song_{song}.bnk"),
                        Path.Combine(path, "audio", "windows", $"song_{song}_preview.bnk")
                    };

                    foreach (var songFile in songFiles)
                    {
                        File.Copy(songFile, Path.Combine(dest, Path.GetFileName(songFile)));

                        var buffer = new byte[8];
                        using (var fo = File.Open(songFile, FileMode.Open, FileAccess.Read))
                        {
                            // well, it's more complex than that in general but it works in songs.psarc file
                            fo.Seek(44, SeekOrigin.Begin);
                            fo.Read(buffer, 0, 8);
                            var span = buffer.AsSpan(0, 8);
                            var no = BitConverter.ToInt64(span);

                            var wemFile = Path.Combine(path, "audio", "windows", $"{no}.wem");
                            File.Copy(wemFile, Path.Combine(dest, Path.GetFileName(wemFile)));
                        }
                    }

                    // album art
                    dest = Path.Combine(outPath, "gfxassets", "album_art");
                    Directory.CreateDirectory(dest);
                    foreach (var file in Directory.GetFiles(Path.Combine(path, "gfxassets", "album_art"), $"album_{song}*"))
                    {
                        File.Copy(file, Path.Combine(dest, Path.GetFileName(file)));
                    }

                    // manifests and songs
                    var manifestsDir = Path.GetFileName(Directory.GetDirectories(Path.Combine(path, "manifests")).Single());
                    var additionalDirs = new[]
                    {
                        Path.Combine("manifests", manifestsDir),
                        Path.Combine("songs", "arr"),
                        Path.Combine("songs", "bin", "generic")
                    };

                    foreach (var additionalDir in additionalDirs)
                    {
                        dest = Path.Combine(outPath, additionalDir);
                        Directory.CreateDirectory(dest);

                        foreach (var file in Directory.GetFiles(Path.Combine(path, additionalDir), $"{song}*"))
                        {
                            File.Copy(file, Path.Combine(dest, Path.GetFileName(file)));
                        }
                    }

                    // lyrics assets; basically ultrasoul only
                    var lyrics = Path.Combine(path, "assets", "ui", "lyrics", song);
                    if (Directory.Exists(lyrics))
                    {
                        dest = Path.Combine(outPath, "assets", "ui", "lyrics", song);
                        Directory.CreateDirectory(dest);

                        foreach (var file in Directory.GetFiles(lyrics))
                            File.Copy(file, Path.Combine(dest, Path.GetFileName(file)));
                    }

                    // hsan - extract the current song only
                    var psarcHsanFileName = Directory.GetFiles(Path.Combine(path, "manifests"), "*.hsan", SearchOption.AllDirectories).Single();
                    var psarcHsan = JObject.Parse(File.ReadAllText(psarcHsanFileName));
                    var entriesToBeRemoved = psarcHsan["Entries"].Where(c => !((string)c.Children()["Attributes"]["SongKey"].Single()).Equals(song, StringComparison.InvariantCultureIgnoreCase)).ToList();
                    foreach (var entryToBeRemoved in entriesToBeRemoved)
                        entryToBeRemoved.Remove();

                    var hsanout = Path.Combine(outPath, "manifests", manifestsDir, Path.GetFileName(psarcHsanFileName));
                    File.WriteAllText(hsanout, psarcHsan.ToString());

                    // model files and graph not needed
                }
                catch (Exception e)
                {
                    var color = Console.ForegroundColor;
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine($"Failed with error: {e}");
                    Console.ForegroundColor = color;
                }
            }
        }
    }
}

THE GLYPHS FILE

lyrics_ultrasoul.glyphs.xml

<?xml version="1.0" encoding="utf-8"?>
<GlyphDefinitions TextureWidth="512" TextureHeight="1024">
  <GlyphDefinition Symbol="…" InnerYMin="0.03125" InnerYMax="0.037109375" InnerXMin="0.015625" InnerXMax="0.0625" OuterYMin="0" OuterYMax="0.05078125" OuterXMin="0" OuterXMax="0.078125" />
  <GlyphDefinition Symbol="a" InnerYMin="0.022460938" InnerYMax="0.037109375" InnerXMin="0.09375" InnerXMax="0.12109375" OuterYMin="0" OuterYMax="0.05078125" OuterXMin="0.078125" OuterXMax="0.13671875" />
  <GlyphDefinition Symbol="c" InnerYMin="0.022460938" InnerYMax="0.037109375" InnerXMin="0.15234375" InnerXMax="0.171875" OuterYMin="0" OuterYMax="0.05078125" OuterXMin="0.13671875" OuterXMax="0.1875" />
  <GlyphDefinition Symbol="D" InnerYMin="0.015625" InnerYMax="0.036132812" InnerXMin="0.203125" InnerXMax="0.234375" OuterYMin="0" OuterYMax="0.05078125" OuterXMin="0.1875" OuterXMax="0.25" />
  <GlyphDefinition Symbol="e" InnerYMin="0.022460938" InnerYMax="0.037109375" InnerXMin="0.265625" InnerXMax="0.29101562" OuterYMin="0" OuterYMax="0.05078125" OuterXMin="0.25" OuterXMax="0.30664062" />
  <GlyphDefinition Symbol="I" InnerYMin="0.015625" InnerYMax="0.036132812" InnerXMin="0.32226562" InnerXMax="0.33007812" OuterYMin="0" OuterYMax="0.05078125" OuterXMin="0.30664062" OuterXMax="0.34570312" />
  <GlyphDefinition Symbol="l" InnerYMin="0.0126953125" InnerYMax="0.036132812" InnerXMin="0.36132812" InnerXMax="0.36914062" OuterYMin="0" OuterYMax="0.05078125" OuterXMin="0.34570312" OuterXMax="0.38476562" />
  <GlyphDefinition Symbol="n" InnerYMin="0.022460938" InnerYMax="0.036132812" InnerXMin="0.40039062" InnerXMax="0.42382812" OuterYMin="0" OuterYMax="0.05078125" OuterXMin="0.38476562" OuterXMax="0.43945312" />
  <GlyphDefinition Symbol="o" InnerYMin="0.022460938" InnerYMax="0.037109375" InnerXMin="0.45507812" InnerXMax="0.48242188" OuterYMin="0" OuterYMax="0.05078125" OuterXMin="0.43945312" OuterXMax="0.49804688" />
  <GlyphDefinition Symbol="t" InnerYMin="0.018554688" InnerYMax="0.036132812" InnerXMin="0.5136719" InnerXMax="0.5292969" OuterYMin="0" OuterYMax="0.05078125" OuterXMin="0.49804688" OuterXMax="0.5449219" />
  <GlyphDefinition Symbol="i" InnerYMin="0.0146484375" InnerYMax="0.036132812" InnerXMin="0.5605469" InnerXMax="0.5703125" OuterYMin="0" OuterYMax="0.05078125" OuterXMin="0.5449219" OuterXMax="0.5859375" />
  <GlyphDefinition Symbol="あ" InnerYMin="0.0146484375" InnerYMax="0.0390625" InnerXMin="0.6015625" InnerXMax="0.6484375" OuterYMin="0" OuterYMax="0.05078125" OuterXMin="0.5859375" OuterXMax="0.6640625" />
  <GlyphDefinition Symbol="い" InnerYMin="0.016601562" InnerYMax="0.037109375" InnerXMin="0.6796875" InnerXMax="0.7246094" OuterYMin="0" OuterYMax="0.05078125" OuterXMin="0.6640625" OuterXMax="0.7402344" />
  <GlyphDefinition Symbol="う" InnerYMin="0.013671875" InnerYMax="0.0390625" InnerXMin="0.7558594" InnerXMax="0.7910156" OuterYMin="0" OuterYMax="0.05078125" OuterXMin="0.7402344" OuterXMax="0.8066406" />
  <GlyphDefinition Symbol="え" InnerYMin="0.013671875" InnerYMax="0.0390625" InnerXMin="0.8222656" InnerXMax="0.8691406" OuterYMin="0" OuterYMax="0.05078125" OuterXMin="0.8066406" OuterXMax="0.8847656" />
  <GlyphDefinition Symbol="お" InnerYMin="0.0146484375" InnerYMax="0.038085938" InnerXMin="0.9003906" InnerXMax="0.94921875" OuterYMin="0" OuterYMax="0.05078125" OuterXMin="0.8847656" OuterXMax="0.96484375" />
  <GlyphDefinition Symbol="か" InnerYMin="0.06542969" InnerYMax="0.08984375" InnerXMin="0.015625" InnerXMax="0.06640625" OuterYMin="0.05078125" OuterYMax="0.1015625" OuterXMin="0" OuterXMax="0.08203125" />
  <GlyphDefinition Symbol="が" InnerYMin="0.06347656" InnerYMax="0.08886719" InnerXMin="0.09765625" InnerXMax="0.15039062" OuterYMin="0.05078125" OuterYMax="0.1015625" OuterXMin="0.08203125" OuterXMax="0.16601562" />
  <GlyphDefinition Symbol="き" InnerYMin="0.06542969" InnerYMax="0.08984375" InnerXMin="0.18164062" InnerXMax="0.22460938" OuterYMin="0.05078125" OuterYMax="0.1015625" OuterXMin="0.16601562" OuterXMax="0.24023438" />
  <GlyphDefinition Symbol="く" InnerYMin="0.06542969" InnerYMax="0.08984375" InnerXMin="0.25585938" InnerXMax="0.29101562" OuterYMin="0.05078125" OuterYMax="0.1015625" OuterXMin="0.24023438" OuterXMax="0.30664062" />
  <GlyphDefinition Symbol="ぐ" InnerYMin="0.06347656" InnerYMax="0.08984375" InnerXMin="0.32226562" InnerXMax="0.3671875" OuterYMin="0.05078125" OuterYMax="0.1015625" OuterXMin="0.30664062" OuterXMax="0.3828125" />
  <GlyphDefinition Symbol="け" InnerYMin="0.06542969" InnerYMax="0.08984375" InnerXMin="0.3984375" InnerXMax="0.44335938" OuterYMin="0.05078125" OuterYMax="0.1015625" OuterXMin="0.3828125" OuterXMax="0.45898438" />
  <GlyphDefinition Symbol="げ" InnerYMin="0.06347656" InnerYMax="0.08984375" InnerXMin="0.47460938" InnerXMax="0.5234375" OuterYMin="0.05078125" OuterYMax="0.1015625" OuterXMin="0.45898438" OuterXMax="0.5390625" />
  <GlyphDefinition Symbol="こ" InnerYMin="0.068359375" InnerYMax="0.08886719" InnerXMin="0.5546875" InnerXMax="0.59375" OuterYMin="0.05078125" OuterYMax="0.1015625" OuterXMin="0.5390625" OuterXMax="0.609375" />
  <GlyphDefinition Symbol="さ" InnerYMin="0.064453125" InnerYMax="0.08886719" InnerXMin="0.625" InnerXMax="0.6640625" OuterYMin="0.05078125" OuterYMax="0.1015625" OuterXMin="0.609375" OuterXMax="0.6796875" />
  <GlyphDefinition Symbol="し" InnerYMin="0.06640625" InnerYMax="0.08886719" InnerXMin="0.6953125" InnerXMax="0.734375" OuterYMin="0.05078125" OuterYMax="0.1015625" OuterXMin="0.6796875" OuterXMax="0.75" />
  <GlyphDefinition Symbol="じ" InnerYMin="0.06542969" InnerYMax="0.08886719" InnerXMin="0.765625" InnerXMax="0.8046875" OuterYMin="0.05078125" OuterYMax="0.1015625" OuterXMin="0.75" OuterXMax="0.8203125" />
  <GlyphDefinition Symbol="す" InnerYMin="0.06542969" InnerYMax="0.08984375" InnerXMin="0.8359375" InnerXMax="0.8828125" OuterYMin="0.05078125" OuterYMax="0.1015625" OuterXMin="0.8203125" OuterXMax="0.8984375" />
  <GlyphDefinition Symbol="そ" InnerYMin="0.064453125" InnerYMax="0.08886719" InnerXMin="0.9140625" InnerXMax="0.9609375" OuterYMin="0.05078125" OuterYMax="0.1015625" OuterXMin="0.8984375" OuterXMax="0.9765625" />
  <GlyphDefinition Symbol="た" InnerYMin="0.11621094" InnerYMax="0.13964844" InnerXMin="0.015625" InnerXMax="0.064453125" OuterYMin="0.1015625" OuterYMax="0.15234375" OuterXMin="0" OuterXMax="0.080078125" />
  <GlyphDefinition Symbol="だ" InnerYMin="0.115234375" InnerYMax="0.13964844" InnerXMin="0.095703125" InnerXMax="0.14648438" OuterYMin="0.1015625" OuterYMax="0.15234375" OuterXMin="0.080078125" OuterXMax="0.16210938" />
  <GlyphDefinition Symbol="っ" InnerYMin="0.12402344" InnerYMax="0.13964844" InnerXMin="0.17773438" InnerXMax="0.21484375" OuterYMin="0.1015625" OuterYMax="0.15234375" OuterXMin="0.16210938" OuterXMax="0.23046875" />
  <GlyphDefinition Symbol="つ" InnerYMin="0.119140625" InnerYMax="0.13867188" InnerXMin="0.24609375" InnerXMax="0.29296875" OuterYMin="0.1015625" OuterYMax="0.15234375" OuterXMin="0.23046875" OuterXMax="0.30859375" />
  <GlyphDefinition Symbol="づ" InnerYMin="0.11425781" InnerYMax="0.13867188" InnerXMin="0.32421875" InnerXMax="0.375" OuterYMin="0.1015625" OuterYMax="0.15234375" OuterXMin="0.30859375" OuterXMax="0.390625" />
  <GlyphDefinition Symbol="て" InnerYMin="0.1171875" InnerYMax="0.13964844" InnerXMin="0.40625" InnerXMax="0.45117188" OuterYMin="0.1015625" OuterYMax="0.15234375" OuterXMin="0.390625" OuterXMax="0.46679688" />
  <GlyphDefinition Symbol="で" InnerYMin="0.1171875" InnerYMax="0.13964844" InnerXMin="0.48242188" InnerXMax="0.53125" OuterYMin="0.1015625" OuterYMax="0.15234375" OuterXMin="0.46679688" OuterXMax="0.546875" />
  <GlyphDefinition Symbol="と" InnerYMin="0.11621094" InnerYMax="0.13964844" InnerXMin="0.5625" InnerXMax="0.6015625" OuterYMin="0.1015625" OuterYMax="0.15234375" OuterXMin="0.546875" OuterXMax="0.6171875" />
  <GlyphDefinition Symbol="ど" InnerYMin="0.11425781" InnerYMax="0.13964844" InnerXMin="0.6328125" InnerXMax="0.67578125" OuterYMin="0.1015625" OuterYMax="0.15234375" OuterXMin="0.6171875" OuterXMax="0.69140625" />
  <GlyphDefinition Symbol="な" InnerYMin="0.115234375" InnerYMax="0.13964844" InnerXMin="0.70703125" InnerXMax="0.7578125" OuterYMin="0.1015625" OuterYMax="0.15234375" OuterXMin="0.69140625" OuterXMax="0.7734375" />
  <GlyphDefinition Symbol="に" InnerYMin="0.1171875" InnerYMax="0.13964844" InnerXMin="0.7890625" InnerXMax="0.8339844" OuterYMin="0.1015625" OuterYMax="0.15234375" OuterXMin="0.7734375" OuterXMax="0.8496094" />
  <GlyphDefinition Symbol="の" InnerYMin="0.1171875" InnerYMax="0.13867188" InnerXMin="0.8652344" InnerXMax="0.9140625" OuterYMin="0.1015625" OuterYMax="0.15234375" OuterXMin="0.8496094" OuterXMax="0.9296875" />
  <GlyphDefinition Symbol="は" InnerYMin="0.16796875" InnerYMax="0.19140625" InnerXMin="0.015625" InnerXMax="0.064453125" OuterYMin="0.15234375" OuterYMax="0.203125" OuterXMin="0" OuterXMax="0.080078125" />
  <GlyphDefinition Symbol="ば" InnerYMin="0.16503906" InnerYMax="0.19140625" InnerXMin="0.095703125" InnerXMax="0.14453125" OuterYMin="0.15234375" OuterYMax="0.203125" OuterXMin="0.080078125" OuterXMax="0.16015625" />
  <GlyphDefinition Symbol="び" InnerYMin="0.16503906" InnerYMax="0.18945312" InnerXMin="0.17578125" InnerXMax="0.22460938" OuterYMin="0.15234375" OuterYMax="0.203125" OuterXMin="0.16015625" OuterXMax="0.24023438" />
  <GlyphDefinition Symbol="ま" InnerYMin="0.16699219" InnerYMax="0.19140625" InnerXMin="0.25585938" InnerXMax="0.29882812" OuterYMin="0.15234375" OuterYMax="0.203125" OuterXMin="0.24023438" OuterXMax="0.31445312" />
  <GlyphDefinition Symbol="み" InnerYMin="0.16601562" InnerYMax="0.19042969" InnerXMin="0.33007812" InnerXMax="0.38085938" OuterYMin="0.15234375" OuterYMax="0.203125" OuterXMin="0.31445312" OuterXMax="0.39648438" />
  <GlyphDefinition Symbol="め" InnerYMin="0.16699219" InnerYMax="0.19042969" InnerXMin="0.41210938" InnerXMax="0.4609375" OuterYMin="0.15234375" OuterYMax="0.203125" OuterXMin="0.39648438" OuterXMax="0.4765625" />
  <GlyphDefinition Symbol="も" InnerYMin="0.16699219" InnerYMax="0.19042969" InnerXMin="0.4921875" InnerXMax="0.5332031" OuterYMin="0.15234375" OuterYMax="0.203125" OuterXMin="0.4765625" OuterXMax="0.5488281" />
  <GlyphDefinition Symbol="ゃ" InnerYMin="0.171875" InnerYMax="0.19140625" InnerXMin="0.5644531" InnerXMax="0.6074219" OuterYMin="0.15234375" OuterYMax="0.203125" OuterXMin="0.5488281" OuterXMax="0.6230469" />
  <GlyphDefinition Symbol="や" InnerYMin="0.16601562" InnerYMax="0.19042969" InnerXMin="0.6386719" InnerXMax="0.6894531" OuterYMin="0.15234375" OuterYMax="0.203125" OuterXMin="0.6230469" OuterXMax="0.7050781" />
  <GlyphDefinition Symbol="ょ" InnerYMin="0.171875" InnerYMax="0.19140625" InnerXMin="0.7207031" InnerXMax="0.7578125" OuterYMin="0.15234375" OuterYMax="0.203125" OuterXMin="0.7050781" OuterXMax="0.7734375" />
  <GlyphDefinition Symbol="ら" InnerYMin="0.16601562" InnerYMax="0.19140625" InnerXMin="0.7890625" InnerXMax="0.828125" OuterYMin="0.15234375" OuterYMax="0.203125" OuterXMin="0.7734375" OuterXMax="0.84375" />
  <GlyphDefinition Symbol="り" InnerYMin="0.16796875" InnerYMax="0.19140625" InnerXMin="0.859375" InnerXMax="0.8925781" OuterYMin="0.15234375" OuterYMax="0.203125" OuterXMin="0.84375" OuterXMax="0.9082031" />
  <GlyphDefinition Symbol="る" InnerYMin="0.16699219" InnerYMax="0.19042969" InnerXMin="0.9238281" InnerXMax="0.96875" OuterYMin="0.15234375" OuterYMax="0.203125" OuterXMin="0.9082031" OuterXMax="0.984375" />
  <GlyphDefinition Symbol="れ" InnerYMin="0.21777344" InnerYMax="0.24121094" InnerXMin="0.015625" InnerXMax="0.068359375" OuterYMin="0.203125" OuterYMax="0.25390625" OuterXMin="0" OuterXMax="0.083984375" />
  <GlyphDefinition Symbol="わ" InnerYMin="0.21777344" InnerYMax="0.2421875" InnerXMin="0.099609375" InnerXMax="0.1484375" OuterYMin="0.203125" OuterYMax="0.25390625" OuterXMin="0.083984375" OuterXMax="0.1640625" />
  <GlyphDefinition Symbol="を" InnerYMin="0.21679688" InnerYMax="0.2421875" InnerXMin="0.1796875" InnerXMax="0.2265625" OuterYMin="0.203125" OuterYMax="0.25390625" OuterXMin="0.1640625" OuterXMax="0.2421875" />
  <GlyphDefinition Symbol="ん" InnerYMin="0.21777344" InnerYMax="0.24121094" InnerXMin="0.2578125" InnerXMax="0.30859375" OuterYMin="0.203125" OuterYMax="0.25390625" OuterXMin="0.2421875" OuterXMax="0.32421875" />
  <GlyphDefinition Symbol="ア" InnerYMin="0.21777344" InnerYMax="0.24121094" InnerXMin="0.33984375" InnerXMax="0.38476562" OuterYMin="0.203125" OuterYMax="0.25390625" OuterXMin="0.32421875" OuterXMax="0.40039062" />
  <GlyphDefinition Symbol="イ" InnerYMin="0.21679688" InnerYMax="0.24121094" InnerXMin="0.41601562" InnerXMax="0.4609375" OuterYMin="0.203125" OuterYMax="0.25390625" OuterXMin="0.40039062" OuterXMax="0.4765625" />
  <GlyphDefinition Symbol="ウ" InnerYMin="0.21777344" InnerYMax="0.24121094" InnerXMin="0.4921875" InnerXMax="0.5332031" OuterYMin="0.203125" OuterYMax="0.25390625" OuterXMin="0.4765625" OuterXMax="0.5488281" />
  <GlyphDefinition Symbol="ソ" InnerYMin="0.21972656" InnerYMax="0.24121094" InnerXMin="0.5644531" InnerXMax="0.6074219" OuterYMin="0.203125" OuterYMax="0.25390625" OuterXMin="0.5488281" OuterXMax="0.6230469" />
  <GlyphDefinition Symbol="ト" InnerYMin="0.21777344" InnerYMax="0.24121094" InnerXMin="0.6386719" InnerXMax="0.671875" OuterYMin="0.203125" OuterYMax="0.25390625" OuterXMin="0.6230469" OuterXMax="0.6875" />
  <GlyphDefinition Symbol="ド" InnerYMin="0.21777344" InnerYMax="0.24121094" InnerXMin="0.703125" InnerXMax="0.7363281" OuterYMin="0.203125" OuterYMax="0.25390625" OuterXMin="0.6875" OuterXMax="0.7519531" />
  <GlyphDefinition Symbol="パ" InnerYMin="0.21777344" InnerYMax="0.24023438" InnerXMin="0.7675781" InnerXMax="0.8203125" OuterYMin="0.203125" OuterYMax="0.25390625" OuterXMin="0.7519531" OuterXMax="0.8359375" />
  <GlyphDefinition Symbol="ペ" InnerYMin="0.21875" InnerYMax="0.23925781" InnerXMin="0.8515625" InnerXMax="0.90234375" OuterYMin="0.203125" OuterYMax="0.25390625" OuterXMin="0.8359375" OuterXMax="0.91796875" />
  <GlyphDefinition Symbol="ホ" InnerYMin="0.21777344" InnerYMax="0.24121094" InnerXMin="0.93359375" InnerXMax="0.984375" OuterYMin="0.203125" OuterYMax="0.25390625" OuterXMin="0.91796875" OuterXMax="1" />
  <GlyphDefinition Symbol="マ" InnerYMin="0.2705078" InnerYMax="0.29101562" InnerXMin="0.015625" InnerXMax="0.0625" OuterYMin="0.25390625" OuterYMax="0.3046875" OuterXMin="0" OuterXMax="0.078125" />
  <GlyphDefinition Symbol="メ" InnerYMin="0.2685547" InnerYMax="0.2919922" InnerXMin="0.09375" InnerXMax="0.13671875" OuterYMin="0.25390625" OuterYMax="0.3046875" OuterXMin="0.078125" OuterXMax="0.15234375" />
  <GlyphDefinition Symbol="ラ" InnerYMin="0.26953125" InnerYMax="0.29296875" InnerXMin="0.16796875" InnerXMax="0.20898438" OuterYMin="0.25390625" OuterYMax="0.3046875" OuterXMin="0.15234375" OuterXMax="0.22460938" />
  <GlyphDefinition Symbol="ル" InnerYMin="0.26953125" InnerYMax="0.29296875" InnerXMin="0.24023438" InnerXMax="0.29296875" OuterYMin="0.25390625" OuterYMax="0.3046875" OuterXMin="0.22460938" OuterXMax="0.30859375" />
  <GlyphDefinition Symbol="ン" InnerYMin="0.26953125" InnerYMax="0.2919922" InnerXMin="0.32421875" InnerXMax="0.36914062" OuterYMin="0.25390625" OuterYMax="0.3046875" OuterXMin="0.30859375" OuterXMax="0.38476562" />
  <GlyphDefinition Symbol="ー" InnerYMin="0.27734375" InnerYMax="0.28125" InnerXMin="0.40039062" InnerXMax="0.44335938" OuterYMin="0.25390625" OuterYMax="0.3046875" OuterXMin="0.38476562" OuterXMax="0.45898438" />
  <GlyphDefinition Symbol="一" InnerYMin="0.27539062" InnerYMax="0.28027344" InnerXMin="0.47460938" InnerXMax="0.5292969" OuterYMin="0.25390625" OuterYMax="0.3046875" OuterXMin="0.45898438" OuterXMax="0.5449219" />
  <GlyphDefinition Symbol="中" InnerYMin="0.26367188" InnerYMax="0.29296875" InnerXMin="0.5605469" InnerXMax="0.6113281" OuterYMin="0.25390625" OuterYMax="0.3046875" OuterXMin="0.5449219" OuterXMax="0.6269531" />
  <GlyphDefinition Symbol="事" InnerYMin="0.26367188" InnerYMax="0.29296875" InnerXMin="0.6425781" InnerXMax="0.69921875" OuterYMin="0.25390625" OuterYMax="0.3046875" OuterXMin="0.6269531" OuterXMax="0.71484375" />
  <GlyphDefinition Symbol="人" InnerYMin="0.26464844" InnerYMax="0.2939453" InnerXMin="0.73046875" InnerXMax="0.7910156" OuterYMin="0.25390625" OuterYMax="0.3046875" OuterXMin="0.71484375" OuterXMax="0.8066406" />
  <GlyphDefinition Symbol="今" InnerYMin="0.26367188" InnerYMax="0.2939453" InnerXMin="0.8222656" InnerXMax="0.8847656" OuterYMin="0.25390625" OuterYMax="0.3046875" OuterXMin="0.8066406" OuterXMax="0.9003906" />
  <GlyphDefinition Symbol="傷" InnerYMin="0.26367188" InnerYMax="0.2939453" InnerXMin="0.9160156" InnerXMax="0.9765625" OuterYMin="0.25390625" OuterYMax="0.3046875" OuterXMin="0.9003906" OuterXMax="0.9921875" />
  <GlyphDefinition Symbol="分" InnerYMin="0.3154297" InnerYMax="0.34472656" InnerXMin="0.015625" InnerXMax="0.078125" OuterYMin="0.3046875" OuterYMax="0.35546875" OuterXMin="0" OuterXMax="0.09375" />
  <GlyphDefinition Symbol="取" InnerYMin="0.3154297" InnerYMax="0.34472656" InnerXMin="0.109375" InnerXMax="0.16992188" OuterYMin="0.3046875" OuterYMax="0.35546875" OuterXMin="0.09375" OuterXMax="0.18554688" />
  <GlyphDefinition Symbol="夢" InnerYMin="0.31445312" InnerYMax="0.34472656" InnerXMin="0.20117188" InnerXMax="0.2578125" OuterYMin="0.3046875" OuterYMax="0.35546875" OuterXMin="0.18554688" OuterXMax="0.2734375" />
  <GlyphDefinition Symbol="大" InnerYMin="0.3154297" InnerYMax="0.34472656" InnerXMin="0.2890625" InnerXMax="0.34960938" OuterYMin="0.3046875" OuterYMax="0.35546875" OuterXMin="0.2734375" OuterXMax="0.36523438" />
  <GlyphDefinition Symbol="失" InnerYMin="0.31445312" InnerYMax="0.34375" InnerXMin="0.38085938" InnerXMax="0.44140625" OuterYMin="0.3046875" OuterYMax="0.35546875" OuterXMin="0.36523438" OuterXMax="0.45703125" />
  <GlyphDefinition Symbol="希" InnerYMin="0.31445312" InnerYMax="0.34375" InnerXMin="0.47265625" InnerXMax="0.53125" OuterYMin="0.3046875" OuterYMax="0.35546875" OuterXMin="0.45703125" OuterXMax="0.546875" />
  <GlyphDefinition Symbol="底" InnerYMin="0.31445312" InnerYMax="0.34375" InnerXMin="0.5625" InnerXMax="0.6230469" OuterYMin="0.3046875" OuterYMax="0.35546875" OuterXMin="0.546875" OuterXMax="0.6386719" />
  <GlyphDefinition Symbol="悲" InnerYMin="0.31445312" InnerYMax="0.34375" InnerXMin="0.6542969" InnerXMax="0.71484375" OuterYMin="0.3046875" OuterYMax="0.35546875" OuterXMin="0.6386719" OuterXMax="0.73046875" />
  <GlyphDefinition Symbol="意" InnerYMin="0.31445312" InnerYMax="0.34375" InnerXMin="0.74609375" InnerXMax="0.8066406" OuterYMin="0.3046875" OuterYMax="0.35546875" OuterXMin="0.73046875" OuterXMax="0.8222656" />
  <GlyphDefinition Symbol="戦" InnerYMin="0.31445312" InnerYMax="0.34472656" InnerXMin="0.8378906" InnerXMax="0.9003906" OuterYMin="0.3046875" OuterYMax="0.35546875" OuterXMin="0.8222656" OuterXMax="0.9160156" />
  <GlyphDefinition Symbol="手" InnerYMin="0.31445312" InnerYMax="0.34375" InnerXMin="0.9316406" InnerXMax="0.98828125" OuterYMin="0.3046875" OuterYMax="0.35546875" OuterXMin="0.9160156" OuterXMax="1.0039062" />
  <GlyphDefinition Symbol="抜" InnerYMin="0.36621094" InnerYMax="0.3955078" InnerXMin="0.015625" InnerXMax="0.076171875" OuterYMin="0.35546875" OuterYMax="0.40625" OuterXMin="0" OuterXMax="0.091796875" />
  <GlyphDefinition Symbol="揺" InnerYMin="0.36523438" InnerYMax="0.39453125" InnerXMin="0.107421875" InnerXMax="0.16601562" OuterYMin="0.35546875" OuterYMax="0.40625" OuterXMin="0.091796875" OuterXMax="0.18164062" />
  <GlyphDefinition Symbol="暴" InnerYMin="0.36621094" InnerYMax="0.3955078" InnerXMin="0.19726562" InnerXMax="0.25976562" OuterYMin="0.35546875" OuterYMax="0.40625" OuterXMin="0.18164062" OuterXMax="0.27539062" />
  <GlyphDefinition Symbol="望" InnerYMin="0.36621094" InnerYMax="0.39453125" InnerXMin="0.29101562" InnerXMax="0.34765625" OuterYMin="0.35546875" OuterYMax="0.40625" OuterXMin="0.27539062" OuterXMax="0.36328125" />
  <GlyphDefinition Symbol="末" InnerYMin="0.36523438" InnerYMax="0.39453125" InnerXMin="0.37890625" InnerXMax="0.43945312" OuterYMin="0.35546875" OuterYMax="0.40625" OuterXMin="0.36328125" OuterXMax="0.45507812" />
  <GlyphDefinition Symbol="楽" InnerYMin="0.36523438" InnerYMax="0.3955078" InnerXMin="0.47070312" InnerXMax="0.53125" OuterYMin="0.35546875" OuterYMax="0.40625" OuterXMin="0.45507812" OuterXMax="0.546875" />
  <GlyphDefinition Symbol="欲" InnerYMin="0.36523438" InnerYMax="0.3955078" InnerXMin="0.5625" InnerXMax="0.625" OuterYMin="0.35546875" OuterYMax="0.40625" OuterXMin="0.546875" OuterXMax="0.640625" />
  <GlyphDefinition Symbol="歓" InnerYMin="0.36523438" InnerYMax="0.39648438" InnerXMin="0.65625" InnerXMax="0.7167969" OuterYMin="0.35546875" OuterYMax="0.40625" OuterXMin="0.640625" OuterXMax="0.7324219" />
  <GlyphDefinition Symbol="気" InnerYMin="0.36523438" InnerYMax="0.3955078" InnerXMin="0.7480469" InnerXMax="0.80859375" OuterYMin="0.35546875" OuterYMax="0.40625" OuterXMin="0.7324219" OuterXMax="0.82421875" />
  <GlyphDefinition Symbol="決" InnerYMin="0.36523438" InnerYMax="0.39453125" InnerXMin="0.83984375" InnerXMax="0.9003906" OuterYMin="0.35546875" OuterYMax="0.40625" OuterXMin="0.82421875" OuterXMax="0.9160156" />
  <GlyphDefinition Symbol="泣" InnerYMin="0.36621094" InnerYMax="0.39453125" InnerXMin="0.9316406" InnerXMax="0.9902344" OuterYMin="0.35546875" OuterYMax="0.40625" OuterXMin="0.9160156" OuterXMax="1.0058594" />
  <GlyphDefinition Symbol="無" InnerYMin="0.41601562" InnerYMax="0.44628906" InnerXMin="0.015625" InnerXMax="0.076171875" OuterYMin="0.40625" OuterYMax="0.45703125" OuterXMin="0" OuterXMax="0.091796875" />
  <GlyphDefinition Symbol="独" InnerYMin="0.41601562" InnerYMax="0.4453125" InnerXMin="0.107421875" InnerXMax="0.16992188" OuterYMin="0.40625" OuterYMax="0.45703125" OuterXMin="0.091796875" OuterXMax="0.18554688" />
  <GlyphDefinition Symbol="界" InnerYMin="0.4169922" InnerYMax="0.44628906" InnerXMin="0.20117188" InnerXMax="0.26367188" OuterYMin="0.40625" OuterYMax="0.45703125" OuterXMin="0.18554688" OuterXMax="0.27929688" />
  <GlyphDefinition Symbol="番" InnerYMin="0.41601562" InnerYMax="0.4453125" InnerXMin="0.29492188" InnerXMax="0.35546875" OuterYMin="0.40625" OuterYMax="0.45703125" OuterXMin="0.27929688" OuterXMax="0.37109375" />
  <GlyphDefinition Symbol="真" InnerYMin="0.41601562" InnerYMax="0.4453125" InnerXMin="0.38671875" InnerXMax="0.4453125" OuterYMin="0.40625" OuterYMax="0.45703125" OuterXMin="0.37109375" OuterXMax="0.4609375" />
  <GlyphDefinition Symbol="瞬" InnerYMin="0.41601562" InnerYMax="0.44628906" InnerXMin="0.4765625" InnerXMax="0.5332031" OuterYMin="0.40625" OuterYMax="0.45703125" OuterXMin="0.4609375" OuterXMax="0.5488281" />
  <GlyphDefinition Symbol="知" InnerYMin="0.41601562" InnerYMax="0.44628906" InnerXMin="0.5644531" InnerXMax="0.6230469" OuterYMin="0.40625" OuterYMax="0.45703125" OuterXMin="0.5488281" OuterXMax="0.6386719" />
  <GlyphDefinition Symbol="祝" InnerYMin="0.4169922" InnerYMax="0.44628906" InnerXMin="0.6542969" InnerXMax="0.7167969" OuterYMin="0.40625" OuterYMax="0.45703125" OuterXMin="0.6386719" OuterXMax="0.7324219" />
  <GlyphDefinition Symbol="福" InnerYMin="0.4169922" InnerYMax="0.44628906" InnerXMin="0.7480469" InnerXMax="0.8066406" OuterYMin="0.40625" OuterYMax="0.45703125" OuterXMin="0.7324219" OuterXMax="0.8222656" />
  <GlyphDefinition Symbol="終" InnerYMin="0.41601562" InnerYMax="0.44628906" InnerXMin="0.8378906" InnerXMax="0.9003906" OuterYMin="0.40625" OuterYMax="0.45703125" OuterXMin="0.8222656" OuterXMax="0.9160156" />
  <GlyphDefinition Symbol="結" InnerYMin="0.41601562" InnerYMax="0.4453125" InnerXMin="0.9316406" InnerXMax="0.9921875" OuterYMin="0.40625" OuterYMax="0.45703125" OuterXMin="0.9160156" OuterXMax="1.0078125" />
  <GlyphDefinition Symbol="羽" InnerYMin="0.46777344" InnerYMax="0.4970703" InnerXMin="0.015625" InnerXMax="0.072265625" OuterYMin="0.45703125" OuterYMax="0.5078125" OuterXMin="0" OuterXMax="0.087890625" />
  <GlyphDefinition Symbol="胸" InnerYMin="0.46679688" InnerYMax="0.49609375" InnerXMin="0.103515625" InnerXMax="0.1640625" OuterYMin="0.45703125" OuterYMax="0.5078125" OuterXMin="0.087890625" OuterXMax="0.1796875" />
  <GlyphDefinition Symbol="見" InnerYMin="0.46777344" InnerYMax="0.49609375" InnerXMin="0.1953125" InnerXMax="0.25585938" OuterYMin="0.45703125" OuterYMax="0.5078125" OuterXMin="0.1796875" OuterXMax="0.27148438" />
  <GlyphDefinition Symbol="誰" InnerYMin="0.46679688" InnerYMax="0.49609375" InnerXMin="0.28710938" InnerXMax="0.34570312" OuterYMin="0.45703125" OuterYMax="0.5078125" OuterXMin="0.27148438" OuterXMax="0.36132812" />
  <GlyphDefinition Symbol="輝" InnerYMin="0.46679688" InnerYMax="0.49609375" InnerXMin="0.37695312" InnerXMax="0.4375" OuterYMin="0.45703125" OuterYMax="0.5078125" OuterXMin="0.36132812" OuterXMax="0.453125" />
  <GlyphDefinition Symbol="迎" InnerYMin="0.46679688" InnerYMax="0.49609375" InnerXMin="0.46875" InnerXMax="0.5292969" OuterYMin="0.45703125" OuterYMax="0.5078125" OuterXMin="0.453125" OuterXMax="0.5449219" />
  <GlyphDefinition Symbol="遊" InnerYMin="0.46679688" InnerYMax="0.49609375" InnerXMin="0.5605469" InnerXMax="0.62109375" OuterYMin="0.45703125" OuterYMax="0.5078125" OuterXMin="0.5449219" OuterXMax="0.63671875" />
  <GlyphDefinition Symbol="鍛" InnerYMin="0.46679688" InnerYMax="0.4970703" InnerXMin="0.65234375" InnerXMax="0.71484375" OuterYMin="0.45703125" OuterYMax="0.5078125" OuterXMin="0.63671875" OuterXMax="0.73046875" />
  <GlyphDefinition Symbol="開" InnerYMin="0.46777344" InnerYMax="0.49609375" InnerXMin="0.74609375" InnerXMax="0.7988281" OuterYMin="0.45703125" OuterYMax="0.5078125" OuterXMin="0.73046875" OuterXMax="0.8144531" />
  <GlyphDefinition Symbol="間" InnerYMin="0.46777344" InnerYMax="0.49609375" InnerXMin="0.8300781" InnerXMax="0.8828125" OuterYMin="0.45703125" OuterYMax="0.5078125" OuterXMin="0.8144531" OuterXMax="0.8984375" />
  <GlyphDefinition Symbol="限" InnerYMin="0.46777344" InnerYMax="0.4970703" InnerXMin="0.9140625" InnerXMax="0.97265625" OuterYMin="0.45703125" OuterYMax="0.5078125" OuterXMin="0.8984375" OuterXMax="0.98828125" />
  <GlyphDefinition Symbol="?" InnerYMin="0.5234375" InnerYMax="0.54589844" InnerXMin="0.015625" InnerXMax="0.046875" OuterYMin="0.5078125" OuterYMax="0.55859375" OuterXMin="0" OuterXMax="0.0625" />
</GlyphDefinitions>

 

44b.png

arrid.png

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Recently Browsing 0

  • No registered users viewing this page.


Important Information

By using this site, you agree to our Guidelines. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. - Privacy Policy

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.