mirror of
https://github.com/KanjiVG/kanjivg.git
synced 2026-03-27 01:23:10 +01:00
Found the bug in kanjivg.py and fixed 08332.svg
This commit is contained in:
@@ -54,7 +54,7 @@ kvg:type CDATA #IMPLIED >
|
||||
<path id="kvg:08332-s6" kvg:type="㇔" d="M42.04,74.12c3.5,3.26,9.04,13.42,9.91,18.5"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="kvg:08332-g7" kvg:element="玄" kvg:part="2" kvg:number="2" kvg:partial="true" kvg:position="right">
|
||||
<g id="kvg:08332-g7" kvg:element="玄" kvg:partial="true" kvg:position="right">
|
||||
<g id="kvg:08332-g8" kvg:element="幺">
|
||||
<path id="kvg:08332-s7" kvg:type="㇜" d="M70.62,40.62c0.34,1.18,0.41,2.05-0.17,3.34C67.75,50,63,56.75,58.59,61.71c-0.59,0.67-0.67,2.72,0,2.95c3.53,1.18,12.63,2.78,15.66,4.94"/>
|
||||
<path id="kvg:08332-s8" kvg:type="㇜" d="M84.66,50.36c0.37,1.3,0.15,3.98-0.34,4.71c-6.57,9.68-14.7,22.06-24.66,35.12c-1.14,1.5-0.71,2.21,0.69,1.88c8.42-1.99,19.4-5.71,26.76-7.59"/>
|
||||
|
||||
25
kanjivg.py
25
kanjivg.py
@@ -256,6 +256,7 @@ class KanjisHandler(BasicHandler):
|
||||
self.kanjis = {}
|
||||
self.group = None
|
||||
self.groups = []
|
||||
# This stores the components for checking
|
||||
self.compCpt = {}
|
||||
self.metComponents = set()
|
||||
|
||||
@@ -271,7 +272,7 @@ class KanjisHandler(BasicHandler):
|
||||
raise Exception("Each kanji should have id formatted as kvg:kanji_XXXXX.")
|
||||
idVariant = idVariantStr.split('-')
|
||||
self.kanji = Kanji(*idVariant)
|
||||
|
||||
self.compCpt = {}
|
||||
|
||||
def handle_end_kanji(self):
|
||||
if self.group is not None:
|
||||
@@ -301,7 +302,6 @@ class KanjisHandler(BasicHandler):
|
||||
if "kvg:radical" in attrs: group.radical = unicode(attrs["kvg:radical"])
|
||||
if "kvg:phon" in attrs: group.phon = unicode(attrs["kvg:phon"])
|
||||
|
||||
# print("ID is %s" % (attrs["id"]))
|
||||
group.ID = str(attrs["id"])
|
||||
self.group = group
|
||||
|
||||
@@ -309,18 +309,21 @@ class KanjisHandler(BasicHandler):
|
||||
if group.original: self.metComponents.add(group.original)
|
||||
|
||||
if group.number:
|
||||
if not group.part: print("%s: Number specified, but part missing" % (self.kanji.kId()))
|
||||
if not group.part:
|
||||
print("%s: group %s has number %d, but no part" % (self.kanji.kId(), group.ID, group.number))
|
||||
ged = group.element + "n" + str(group.number)
|
||||
# The group must exist already
|
||||
if group.part > 1:
|
||||
if (group.element + str(group.number)) not in self.compCpt:
|
||||
print("%s: Missing numbered group" % (self.kanji.kId()))
|
||||
elif self.compCpt[group.element + str(group.number)] != group.part - 1:
|
||||
if (ged) not in self.compCpt:
|
||||
print("%s: Numbered group %s with no first part" % (self.kanji.kId(), group.ID))
|
||||
elif self.compCpt[ged] != group.part - 1:
|
||||
print("%s: Incorrectly numbered group" % (self.kanji.kId()))
|
||||
# The group must not exist
|
||||
else:
|
||||
if (group.element + str(group.number)) in self.compCpt:
|
||||
print("%s: Duplicate numbered group %s for %s - %d" % (self.kanji.kId(), group.ID, group.element, group.number))
|
||||
self.compCpt[group.element + str(group.number)] = group.part
|
||||
if (ged) in self.compCpt:
|
||||
if self.compCpt[ged] == group.part:
|
||||
print("%s: Duplicate group %s %s for %s part %d - %d" % (self.kanji.kId(), group.ID, ged,group.element, group.part, group.number))
|
||||
self.compCpt[ged] = group.part
|
||||
# No number, just a part - groups restart with part 1, otherwise must
|
||||
# increase correctly
|
||||
elif group.part:
|
||||
@@ -346,6 +349,8 @@ class KanjisHandler(BasicHandler):
|
||||
if "d" in attrs: stroke.svg = unicode(attrs["d"])
|
||||
self.group.childs.append(stroke)
|
||||
|
||||
|
||||
|
||||
class SVGHandler(BasicHandler):
|
||||
"""SVG handler for parsing final kanji files. It can handle single-kanji files or aggregation files. After parsing, the kanji are accessible through the kanjis member, indexed by their svg file name."""
|
||||
def __init__(self):
|
||||
@@ -396,7 +401,7 @@ class SVGHandler(BasicHandler):
|
||||
if not group.part: print("%s: Number specified, but part missing" % (self.currentKanji.kId()))
|
||||
# The group must exist already
|
||||
if group.part > 1:
|
||||
if not self.compCpt.has_key(group.element + str(group.number)):
|
||||
if not self.compCpt.has_key(group.element + "n" + str(group.number)):
|
||||
print("%s: Missing numbered group" % (self.currentKanji.kId()))
|
||||
elif self.compCpt[group.element + str(group.number)] != group.part - 1:
|
||||
print("%s: Incorrectly numbered group" % (self.currentKanji.kId()))
|
||||
|
||||
Reference in New Issue
Block a user