kita 0.5.5 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +13 -0
  4. data/Gemfile.lock +5 -1
  5. data/README.md +3 -1
  6. data/kita.gemspec +7 -3
  7. data/lib/kita.rb +31 -74
  8. data/lib/kita/config.rb +22 -4
  9. data/lib/kita/hiragana.rb +1 -0
  10. data/lib/kita/katakana.rb +1 -0
  11. data/lib/kita/question.rb +23 -0
  12. data/lib/kita/version.rb +1 -1
  13. data/snap/gui/kita.desktop +10 -0
  14. data/snap/gui/kita.svg +137 -0
  15. data/snap/snapcraft.yaml +12 -17
  16. data/sounds//343/201/{202.ogg → 2021.ogg} +0 -0
  17. data/sounds//343/201/{204.ogg → 2041.ogg} +0 -0
  18. data/sounds//343/201/{206.ogg → 2061.ogg} +0 -0
  19. data/sounds//343/201/{210.ogg → 2101.ogg} +0 -0
  20. data/sounds//343/201/{212.ogg → 2121.ogg} +0 -0
  21. data/sounds//343/201/{213.ogg → 2131.ogg} +0 -0
  22. data/sounds//343/201/{214.ogg → 2141.ogg} +0 -0
  23. data/sounds//343/201/{215.ogg → 2151.ogg} +0 -0
  24. data/sounds//343/201/{216.ogg → 2161.ogg} +0 -0
  25. data/sounds//343/201/{217.ogg → 2171.ogg} +0 -0
  26. data/sounds//343/201/{220.ogg → 2201.ogg} +0 -0
  27. data/sounds//343/201/{221.ogg → 2211.ogg} +0 -0
  28. data/sounds//343/201/{222.ogg → 2221.ogg} +0 -0
  29. data/sounds//343/201/{223.ogg → 2231.ogg} +0 -0
  30. data/sounds//343/201/{224.ogg → 2241.ogg} +0 -0
  31. data/sounds//343/201/{225.ogg → 2251.ogg} +0 -0
  32. data/sounds//343/201/{226.ogg → 2261.ogg} +0 -0
  33. data/sounds//343/201/{227.ogg → 2271.ogg} +0 -0
  34. data/sounds//343/201/{230.ogg → 2301.ogg} +0 -0
  35. data/sounds//343/201/{231.ogg → 2311.ogg} +0 -0
  36. data/sounds//343/201/{232.ogg → 2321.ogg} +0 -0
  37. data/sounds//343/201/{233.ogg → 2331.ogg} +0 -0
  38. data/sounds//343/201/{234.ogg → 2341.ogg} +0 -0
  39. data/sounds//343/201/{235.ogg → 2351.ogg} +0 -0
  40. data/sounds//343/201/{236.ogg → 2361.ogg} +0 -0
  41. data/sounds//343/201/{237.ogg → 2371.ogg} +0 -0
  42. data/sounds//343/201/{240.ogg → 2401.ogg} +0 -0
  43. data/sounds//343/201/{241.ogg → 2411.ogg} +0 -0
  44. data/sounds//343/201/{242.ogg → 2421.ogg} +0 -0
  45. data/sounds//343/201/{244.ogg → 2441.ogg} +0 -0
  46. data/sounds//343/201/{245.ogg → 2451.ogg} +0 -0
  47. data/sounds//343/201/{246.ogg → 2461.ogg} +0 -0
  48. data/sounds//343/201/{247.ogg → 2471.ogg} +0 -0
  49. data/sounds//343/201/{250.ogg → 2501.ogg} +0 -0
  50. data/sounds//343/201/{251.ogg → 2511.ogg} +0 -0
  51. data/sounds//343/201/{252.ogg → 2521.ogg} +0 -0
  52. data/sounds//343/201/{253.ogg → 2531.ogg} +0 -0
  53. data/sounds//343/201/{254.ogg → 2541.ogg} +0 -0
  54. data/sounds//343/201/{255.ogg → 2551.ogg} +0 -0
  55. data/sounds//343/201/{256.ogg → 2561.ogg} +0 -0
  56. data/sounds//343/201/2571.ogg +0 -0
  57. data/sounds//343/201/2572.ogg +0 -0
  58. data/sounds//343/201/{260.ogg → 2601.ogg} +0 -0
  59. data/sounds//343/201/{261.ogg → 2611.ogg} +0 -0
  60. data/sounds//343/201/{262.ogg → 2621.ogg} +0 -0
  61. data/sounds//343/201/{263.ogg → 2631.ogg} +0 -0
  62. data/sounds//343/201/{264.ogg → 2641.ogg} +0 -0
  63. data/sounds//343/201/{265.ogg → 2651.ogg} +0 -0
  64. data/sounds//343/201/{266.ogg → 2661.ogg} +0 -0
  65. data/sounds//343/201/{267.ogg → 2671.ogg} +0 -0
  66. data/sounds//343/201/2701.ogg +0 -0
  67. data/sounds//343/201/2702.ogg +0 -0
  68. data/sounds//343/201/{271.ogg → 2711.ogg} +0 -0
  69. data/sounds//343/201/{272.ogg → 2721.ogg} +0 -0
  70. data/sounds//343/201/{273.ogg → 2731.ogg} +0 -0
  71. data/sounds//343/201/{274.ogg → 2741.ogg} +0 -0
  72. data/sounds//343/201/{275.ogg → 2751.ogg} +0 -0
  73. data/sounds//343/201/{276.ogg → 2761.ogg} +0 -0
  74. data/sounds//343/201/{277.ogg → 2771.ogg} +0 -0
  75. data/sounds//343/202/{200.ogg → 2001.ogg} +0 -0
  76. data/sounds//343/202/{201.ogg → 2011.ogg} +0 -0
  77. data/sounds//343/202/{202.ogg → 2021.ogg} +0 -0
  78. data/sounds//343/202/{204.ogg → 2041.ogg} +0 -0
  79. data/sounds//343/202/{206.ogg → 2061.ogg} +0 -0
  80. data/sounds//343/202/{210.ogg → 2101.ogg} +0 -0
  81. data/sounds//343/202/{211.ogg → 2111.ogg} +0 -0
  82. data/sounds//343/202/{212.ogg → 2121.ogg} +0 -0
  83. data/sounds//343/202/{213.ogg → 2131.ogg} +0 -0
  84. data/sounds//343/202/{214.ogg → 2141.ogg} +0 -0
  85. data/sounds//343/202/{215.ogg → 2151.ogg} +0 -0
  86. data/sounds//343/202/{217.ogg → 2171.ogg} +0 -0
  87. data/sounds//343/202/{222.ogg → 2221.ogg} +0 -0
  88. data/sounds//343/202/{223.ogg → 2231.ogg} +0 -0
  89. data/ui/builder.ui +6 -1
  90. data/ui/kita-bordered.svg +141 -0
  91. data/ui/kita.svg +12 -14
  92. metadata +82 -79
  93. data/sounds/he.ogg +0 -0
  94. data/sounds/he2.ogg +0 -0
  95. data/sounds/tofix.txt +0 -2
  96. data/sounds//343/201/257.ogg +0 -0
  97. data/sounds//343/201/270.ogg +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 06aaa540d2009b44eaf3c78f98c2614781e0d51bfc95d1a5e290b7906f38a43c
4
- data.tar.gz: 291ed4302f1f50f8672db9c34767cc3ad82bf90e2eca65c1fc6c3214ee03c5f9
3
+ metadata.gz: 9711a0da8f810049a096344ec961730fd5dd80f65c5cf651c5af7921c3a13fd3
4
+ data.tar.gz: d3edfe79eedc16dc3fb35d5758c9476d3a71e5e102c68e6ed09be906d4ee3587
5
5
  SHA512:
6
- metadata.gz: 4e902f3ffb940bf08ea38f31d94773d77969853012f8bd67a3090b99b462bacdf6bc1d0fc952ca5d50986a9509abbd1f9c1167f63a0b8773da21f3ee012134a3
7
- data.tar.gz: 5e6ad8fa67b82c58c5256525087ae9b03fde7b41becfc76c0ab4f3b429a4ed6e0e57dde4462104b4a05741d17924eece64a532902e230da73eb821a6a41efb9b
6
+ metadata.gz: b342a9ba97d484c52b2ab8500f21560be2be295868784d5e5dc015f37af2a9f466e3a2966ddae4c69572bb035fc7b0575918f22701a0b687412ba0463e23ba1e
7
+ data.tar.gz: d1024783d109e846e817d7c8a55ab0812062fd0f6c2171d83a0e2b4931d6a3867e0ad9617aaf2021053443a5465f799d903e5af7e708c9f61e46af5f688c6ac2
data/.gitignore CHANGED
@@ -8,6 +8,7 @@ vendor
8
8
  /coverage/
9
9
  /doc/
10
10
  /pkg/
11
+ /prime/
11
12
  /spec/reports/
12
13
  /tmp/
13
14
 
@@ -9,6 +9,19 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
9
9
 
10
10
  ### Changed
11
11
 
12
+ ## 2020-06-02
13
+ ### Added
14
+ - Kita randomly selects between two different recordings for each kana
15
+
16
+ ## 2020-05-27
17
+ ### Changed
18
+ - Selecting an incorrect answer for a Katakana question, shows the correct Katakana, rather than
19
+ just repeating the Hiragana
20
+
21
+ ## 2020-05-25
22
+ ### Changed
23
+ - Improved sounds, neither へ nor は are pronounced in their particle form (e and wa).
24
+
12
25
  ## 2020-05-24
13
26
  ### Added
14
27
  - First release
@@ -1,7 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kita (0.5.3)
4
+ <<<<<<< Updated upstream
5
+ kita (0.6.0)
6
+ =======
7
+ kita (0.6.1)
8
+ >>>>>>> Stashed changes
5
9
  config (~> 2.2)
6
10
  gir_ffi (~> 0.15.2)
7
11
  gstreamer (~> 3.4)
data/README.md CHANGED
@@ -1 +1,3 @@
1
- # Kita
1
+ # <img width="60" height="60" alt="Kita Logo" src="https://raw.githubusercontent.com/danbishop/kita/master/ui/kita-bordered.svg?sanitize=true"> Kita
2
+
3
+ A small GTK app to help learn the Japanese kana systems.
@@ -7,12 +7,16 @@ Gem::Specification.new do |spec|
7
7
  spec.version = Kita::VERSION
8
8
  spec.authors = ['Dan Bishop']
9
9
  spec.email = ['d@nbishop.uk']
10
- spec.license = 'GPLv3+'
10
+ spec.license = 'GPL-3.0+'
11
11
 
12
12
  spec.summary = 'A Japanese kana learning tool.'
13
- spec.description = 'A simple tool to help Japanese language learners with hiragana and katakana.'
13
+ spec.description = <<-DESC
14
+ A simple GTK3 app to help Japanese language learners with Hiragana and Katakana. It introduces
15
+ users to the sounds of the kana and teaches basic recognition of both writing systems.
16
+ DESC
17
+
14
18
  spec.homepage = 'https://www.danbishop.org'
15
- spec.required_ruby_version = Gem::Requirement.new('>= 2.3.0')
19
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.5.0')
16
20
 
17
21
  spec.metadata['homepage_uri'] = spec.homepage
18
22
  spec.metadata['source_code_uri'] = 'https://github.com/danbishop/kita'
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'gtk3'
3
4
  require_relative 'kita/audio'
4
5
  require_relative 'kita/config'
5
- require_relative 'kita/hiragana'
6
- require_relative 'kita/katakana'
6
+ require_relative 'kita/question'
7
7
  require_relative 'kita/version'
8
8
 
9
9
  module Kita
@@ -11,99 +11,55 @@ module Kita
11
11
  class Application < Gtk::Application
12
12
  def initialize
13
13
  super 'uk.danbishop.kita', :handles_open
14
- builder_file = "#{File.expand_path(File.dirname(__dir__))}/ui/builder.ui"
15
14
  # Construct a Gtk::Builder instance and load our UI description
16
- @builder = Gtk::Builder.new(file: builder_file)
17
- # Initiate Hiragana class
18
- @hiragana = Hiragana.new
19
- # Initiate Katakana class
20
- @katakana = Katakana.new
21
- @types = [@hiragana]
15
+ @builder = Gtk::Builder.new(file: "#{File.expand_path(File.dirname(__dir__))}/ui/builder.ui")
16
+ @builder.connect_signals { |handler| method(handler) }
17
+ # Initiate Question class
18
+ @question = Question.new
22
19
  @button_signals = {}
23
20
  @sound = Audio.new
24
21
  new_question
25
- menu_setup
26
- setup_new_question_button
27
- setup_repeat_button
28
- build_main_window
29
- end
30
-
31
- def menu_setup
32
- setup_hiragana_switch
33
- setup_katakana_switch
34
- setup_sound_switch
35
22
  setup_about_box
23
+ build_main_window
36
24
  end
37
25
 
38
26
  def setup_about_box
39
- about_box = @builder.get_object('about_box')
27
+ @ee = 0
28
+ about_box = @builder['about_box']
40
29
  about_box.version = VERSION
41
- about_button = @builder.get_object('menu_about')
42
- about_button.signal_connect('clicked') do
30
+ @builder['menu_about'].signal_connect('clicked') do
43
31
  about_box.run
44
32
  about_box.hide
45
33
  end
46
34
  end
47
35
 
48
- def setup_new_question_button
49
- new_question_button = @builder.get_object('new_question')
50
- new_question_button.signal_connect('clicked') do
51
- new_question
52
- end
53
- end
54
-
55
- def setup_repeat_button
56
- new_question_button = @builder.get_object('speak')
57
- new_question_button.signal_connect('clicked') do
58
- @sound.repeat
59
- end
60
- end
61
-
62
- def setup_hiragana_switch
63
- @hiragana_switch = @builder.get_object('hiragana_switch')
64
- @hiragana_switch.signal_connect('notify::active') do
65
- toggle_hiragana
66
- end
67
- end
68
-
69
- def setup_katakana_switch
70
- @katakana_switch = @builder.get_object('katakana_switch')
71
- @katakana_switch.signal_connect('notify::active') do
72
- toggle_katakana
73
- end
74
- end
75
-
76
- def setup_sound_switch
77
- @sound_switch = @builder.get_object('sound_switch')
78
- @sound_switch.signal_connect('notify::active') do
79
- toggle_sound
80
- end
36
+ def repeat_button_click
37
+ @sound.repeat
81
38
  end
82
39
 
83
40
  def toggle_katakana
84
- # TODO: Switch this to using Settings
85
- @types = []
86
- @types << @hiragana if @hiragana_switch.active?
87
- @types << @katakana if @katakana_switch.active?
88
- (@hiragana_switch.set_active(true) && @types = [@hiragana]) if @types.empty?
41
+ Settings.katakana = !Settings.katakana
42
+ (@builder['hiragana_switch'].set_active(true) && Settings.hiragana = true) if !Settings.katakana && !Settings.hiragana
89
43
  end
90
44
 
91
45
  def toggle_hiragana
92
- # TODO: Switch this to using Settings
93
- @types = []
94
- @types << @hiragana if @hiragana_switch.active?
95
- @types << @katakana if @katakana_switch.active?
96
- (@katakana_switch.set_active(true) && @types = [@katakana]) if @types.empty?
46
+ Settings.hiragana = !Settings.hiragana
47
+ (@builder['katakana_switch'].set_active(true) && Settings.katakana = true) if !Settings.katakana && !Settings.hiragana
97
48
  end
98
49
 
99
50
  def toggle_sound
100
51
  Settings.speak = !Settings.speak
101
52
  end
102
53
 
54
+ def ee
55
+ @ee += 1
56
+ @sound.play('これは北です') if @ee == 3
57
+ end
58
+
103
59
  def build_main_window
104
60
  signal_connect :activate do
105
61
  # Connect signal handlers to the constructed widgets
106
- window = @builder.get_object('window')
62
+ window = @builder['window']
107
63
  window.signal_connect('destroy') { Gtk.main_quit }
108
64
  window.present
109
65
  end
@@ -111,20 +67,18 @@ module Kita
111
67
 
112
68
  def new_question
113
69
  reset_buttons
114
- question = @types.sample.question
115
- question_label = @builder.get_object('question')
116
- question_label.set_markup("<span font='72'>#{question[:question]}</span>")
70
+ question = @question.new_question
71
+ @builder['question'].set_markup("<span font='72'>#{question[:question]}</span>")
117
72
  buttons = %w[a b c d]
118
73
  correct_button(buttons, question)
119
74
  wrong_buttons(buttons, question)
120
- puts "Playing: #{question[:question].hiragana}"
121
- @sound.play(question[:question].hiragana) if Settings.speak
75
+ @sound.play("#{question[:question].hiragana}#{[1, 2].sample}") if Settings.speak
122
76
  end
123
77
 
124
78
  def correct_button(buttons, question)
125
79
  # Choose random letter and remove it from array
126
80
  correct = buttons.delete(buttons.sample)
127
- correct_button = @builder.get_object("answer_#{correct}")
81
+ correct_button = @builder["answer_#{correct}"]
128
82
  correct_button.set_label(question[:answer])
129
83
  correct_signal = correct_button.signal_connect('clicked') do
130
84
  new_question
@@ -144,14 +98,17 @@ module Kita
144
98
  def wrong_button_click(button)
145
99
  button.set_sensitive(false)
146
100
  label = button.child
147
- label.set_markup("<span color='#d40000'>#{button.label} #{button.label.hiragana}</span>")
101
+ correction = @question.type == 'hiragana' ? button.label.hiragana : button.label.katakana
102
+ label.set_markup(
103
+ "<span color='#d40000'>#{button.label} #{correction}</span>"
104
+ )
148
105
  end
149
106
 
150
107
  def reset_buttons
151
108
  return nil if @button_signals.empty?
152
109
 
153
110
  @button_signals.each do |letter, signal|
154
- button = @builder.get_object("answer_#{letter}")
111
+ button = @builder["answer_#{letter}"]
155
112
  button.signal_handler_disconnect(signal)
156
113
  button.set_sensitive(true)
157
114
  end
@@ -1,8 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'config'
4
+ require 'fileutils'
4
5
 
5
- Config.load_and_set_settings(Config.setting_files('~/kita.yaml', 'kita'))
6
- Settings.speak = true
7
- Settings.hiragana = true
8
- Settings.katakana = false
6
+ # Set config directory and create it if it doesn't exist
7
+ CONF_DIR = "#{ENV['HOME']}/.config/kita"
8
+ CONF_FILE = "#{CONF_DIR}/config.yaml"
9
+ FileUtils.mkdir_p(CONF_DIR) unless File.exist?(CONF_DIR)
10
+
11
+ def save_settings
12
+ puts 'Saved settings'
13
+ File.open(CONF_FILE, 'w') { |file| file.write(Settings.to_hash.to_yaml) }
14
+ end
15
+
16
+ if File.exist?(CONF_FILE)
17
+ puts 'Loaded settings'
18
+ Config.load_and_set_settings(CONF_FILE)
19
+ else
20
+ puts 'No settings detected, first run? Using defaults.'
21
+ Config.load_and_set_settings(CONF_FILE)
22
+ Settings.speak = true
23
+ Settings.hiragana = true
24
+ Settings.katakana = false
25
+ save_settings
26
+ end
@@ -48,6 +48,7 @@ class Hiragana
48
48
  def build_question(chars)
49
49
  {
50
50
  question: chars[0],
51
+ type: 'hiragana',
51
52
  answer: chars[0].romaji,
52
53
  choices: [
53
54
  chars[1].romaji,
@@ -48,6 +48,7 @@ class Katakana
48
48
  def build_question(chars)
49
49
  {
50
50
  question: chars[0],
51
+ type: 'katakana',
51
52
  answer: chars[0].hiragana,
52
53
  choices: [
53
54
  chars[1].hiragana,
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'hiragana'
4
+ require_relative 'katakana'
5
+
6
+ # Question Class
7
+ class Question
8
+ attr_accessor :type
9
+
10
+ def initialize
11
+ @hiragana = Hiragana.new
12
+ @katakana = Katakana.new
13
+ end
14
+
15
+ def new_question
16
+ question_types = []
17
+ question_types.push @hiragana if Settings.hiragana
18
+ question_types.push @katakana if Settings.katakana
19
+ question = question_types.sample.question
20
+ @type = question[:type]
21
+ question
22
+ end
23
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Kita
4
- VERSION = '0.5.5'
4
+ VERSION = '0.6.1'
5
5
  end
@@ -0,0 +1,10 @@
1
+ [Desktop Entry]
2
+ Name=Kita
3
+ GenericName=Kita
4
+ X-GNOME-FullName=Kita
5
+ Comment=Learn the Japanese kana
6
+ Keywords=Japanese;kana;hiragana;katakana;learn;
7
+ Exec=kita
8
+ Terminal=false
9
+ Type=Application
10
+ Icon=${SNAP}/meta/gui/kita.svg
@@ -0,0 +1,137 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
6
+ xmlns:cc="http://creativecommons.org/ns#"
7
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
+ xmlns:svg="http://www.w3.org/2000/svg"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12
+ width="50mm"
13
+ height="50mm"
14
+ viewBox="0 0 50 50"
15
+ version="1.1"
16
+ id="svg8"
17
+ inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
18
+ sodipodi:docname="kita.svg">
19
+ <defs
20
+ id="defs2">
21
+ <filter
22
+ style="color-interpolation-filters:sRGB"
23
+ id="filter987"
24
+ inkscape:label="filter0" />
25
+ <filter
26
+ style="color-interpolation-filters:sRGB"
27
+ inkscape:label="Noise Fill"
28
+ id="filter1667">
29
+ <feTurbulence
30
+ type="fractalNoise"
31
+ baseFrequency="0.02 0.04"
32
+ numOctaves="5"
33
+ seed="1"
34
+ result="turbulence"
35
+ id="feTurbulence1651" />
36
+ <feComposite
37
+ in="SourceGraphic"
38
+ in2="turbulence"
39
+ operator="in"
40
+ result="composite1"
41
+ id="feComposite1653" />
42
+ <feColorMatrix
43
+ values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 3 -1 "
44
+ result="color"
45
+ id="feColorMatrix1655" />
46
+ <feFlood
47
+ flood-opacity="1"
48
+ flood-color="rgb(21,40,57)"
49
+ result="flood"
50
+ id="feFlood1657" />
51
+ <feMerge
52
+ result="merge"
53
+ id="feMerge1663">
54
+ <feMergeNode
55
+ in="flood"
56
+ id="feMergeNode1659" />
57
+ <feMergeNode
58
+ in="color"
59
+ id="feMergeNode1661" />
60
+ </feMerge>
61
+ <feComposite
62
+ in2="SourceGraphic"
63
+ operator="in"
64
+ result="composite2"
65
+ id="feComposite1665" />
66
+ </filter>
67
+ </defs>
68
+ <sodipodi:namedview
69
+ id="base"
70
+ pagecolor="#000000"
71
+ bordercolor="#666666"
72
+ borderopacity="1.0"
73
+ inkscape:pageopacity="0"
74
+ inkscape:pageshadow="2"
75
+ inkscape:zoom="0.7"
76
+ inkscape:cx="337.63766"
77
+ inkscape:cy="-256.1795"
78
+ inkscape:document-units="mm"
79
+ inkscape:current-layer="layer1"
80
+ showgrid="false"
81
+ inkscape:window-width="3368"
82
+ inkscape:window-height="1376"
83
+ inkscape:window-x="72"
84
+ inkscape:window-y="27"
85
+ inkscape:window-maximized="1"
86
+ fit-margin-top="0"
87
+ fit-margin-left="0"
88
+ fit-margin-right="0"
89
+ fit-margin-bottom="0"
90
+ inkscape:pagecheckerboard="true" />
91
+ <metadata
92
+ id="metadata5">
93
+ <rdf:RDF>
94
+ <cc:Work
95
+ rdf:about="">
96
+ <dc:format>image/svg+xml</dc:format>
97
+ <dc:type
98
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
99
+ <dc:title></dc:title>
100
+ </cc:Work>
101
+ </rdf:RDF>
102
+ </metadata>
103
+ <g
104
+ inkscape:label="Layer 1"
105
+ inkscape:groupmode="layer"
106
+ id="layer1"
107
+ transform="translate(-25.905403,-105.02035)">
108
+ <text
109
+ xml:space="preserve"
110
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
111
+ x="46.869045"
112
+ y="115.57143"
113
+ id="text817"><tspan
114
+ sodipodi:role="line"
115
+ id="tspan815"
116
+ x="46.869045"
117
+ y="125.4403"
118
+ style="stroke-width:0.26458332" /></text>
119
+ <circle
120
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke"
121
+ id="path3017"
122
+ cx="50.905403"
123
+ cy="130.02036"
124
+ r="25" />
125
+ <text
126
+ xml:space="preserve"
127
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.4786377px;line-height:1.25;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;fill:#d40000;fill-opacity:1;stroke:none;stroke-width:0.96196598"
128
+ x="31.512171"
129
+ y="144.46909"
130
+ id="text2913"><tspan
131
+ sodipodi:role="line"
132
+ id="tspan2911"
133
+ x="31.512171"
134
+ y="144.46909"
135
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Bold';fill:#d40000;stroke-width:0.96196598">北</tspan></text>
136
+ </g>
137
+ </svg>