ea 0.6.128 → 0.6.130
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/ea/fonts/carlito_gdi_widths.json +1 -0
- data/lib/ea/fonts/cjk_fallback_widths.json +1 -0
- data/lib/ea/fonts/metrics.rb +73 -15
- data/lib/ea/fonts/vertical_metrics.json +154 -0
- data/lib/ea/sources/qea/diagram_builder/association_class.rb +52 -0
- data/lib/ea/sources/qea/diagram_builder/routing.rb +57 -3
- data/lib/ea/sources/qea/diagram_builder.rb +5 -2
- data/lib/ea/sources/qea/relationship_builder.rb +6 -6
- data/lib/ea/sources/xmi/relationship_builder.rb +15 -8
- data/lib/ea/svg/ea_emitter/compartment/note_body.rb +56 -20
- data/lib/ea/svg/ea_emitter/compartment/note_html.rb +18 -31
- data/lib/ea/svg/ea_emitter/connector_redock.rb +40 -0
- data/lib/ea/svg/ea_emitter/connectors.rb +1 -0
- data/lib/ea/svg/ea_emitter/font_resolver.rb +6 -1
- data/lib/ea/svg/ea_emitter/label/end_label.rb +92 -7
- data/lib/ea/svg/ea_emitter/label/midpoint_label.rb +28 -8
- data/lib/ea/svg/ea_emitter/labels.rb +18 -3
- data/lib/ea/svg/ea_emitter/marker/diamond.rb +29 -5
- data/lib/ea/version.rb +1 -1
- metadata +5 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e877fc8eb012620c93ed24548c721e3667363494d993399c4eb2c9dbcccd978e
|
|
4
|
+
data.tar.gz: '09b81ec266d8d07bd4e4609e9857346a20d797240661096d6aabe5a86041627e'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8461c82ecb976509ce37c1a52a7fd5ecb3439df8d2da348e3a0b1ead2329cb8a3bff22e5f0e84cf0eb768d2d99767f824e75d8d21c1797a21996fc9122d63b45
|
|
7
|
+
data.tar.gz: ee2f6c0b1330ab92aa68ec2a970134b2d83c1373920945e9652577ea5443645fafa8ef8e56cd5b8ecd9c2004d51b1a3917ac02997c2241b0cee004e87e73819a
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"face":"Carlito","source":"GDI GetCharWidth32W at 96 DPI, Windows Server 2022, lutaml/ea run 39276232219","key":"logical height:weight:style","widths":{"10:400:italic":{" ":2,"(":3,")":3,"-":3,".":3,"0":5,"2":5,"3":5,":":3,"C":5,"D":6,"E":5,"G":6,"L":4,"M":9,"R":5,"S":5,"U":6,"X":5,"a":5,"c":4,"e":5,"f":3,"g":5,"h":5,"i":2,"l":2,"m":8,"n":5,"o":5,"p":5,"r":3,"t":3,"v":4,"y":4},"10:400:normal":{" ":2,"(":3,")":3,"-":3,".":3,"0":5,"2":5,"3":5,":":3,"C":5,"D":6,"E":5,"G":6,"L":4,"M":9,"R":5,"S":5,"U":6,"X":5,"a":5,"c":4,"e":5,"f":3,"g":5,"h":5,"i":2,"l":2,"m":8,"n":5,"o":5,"p":5,"r":3,"t":3,"v":5,"y":5},"10:700:italic":{" ":2,"(":3,")":3,"-":3,".":3,"0":5,"2":5,"3":5,":":3,"C":5,"D":6,"E":5,"G":6,"L":4,"M":9,"R":6,"S":5,"U":7,"X":6,"a":5,"c":4,"e":5,"f":3,"g":5,"h":5,"i":2,"l":2,"m":8,"n":5,"o":5,"p":5,"r":4,"t":3,"v":5,"y":5},"10:700:normal":{" ":2,"(":3,")":3,"-":3,".":3,"0":5,"2":5,"3":5,":":3,"C":5,"D":6,"E":5,"G":6,"L":4,"M":9,"R":6,"S":5,"U":7,"X":6,"a":5,"c":4,"e":5,"f":3,"g":5,"h":5,"i":2,"l":2,"m":8,"n":5,"o":5,"p":5,"r":4,"t":3,"v":5,"y":5},"12:400:italic":{" ":3,"(":4,")":4,"-":4,".":3,"0":6,"2":6,"3":6,":":3,"C":6,"D":7,"E":6,"G":8,"L":5,"M":10,"R":7,"S":5,"U":8,"X":6,"a":6,"c":5,"e":6,"f":4,"g":6,"h":6,"i":3,"l":3,"m":10,"n":6,"o":6,"p":6,"r":4,"t":4,"v":5,"y":5},"12:400:normal":{" ":3,"(":4,")":4,"-":4,".":3,"0":6,"2":6,"3":6,":":3,"C":6,"D":7,"E":6,"G":8,"L":5,"M":10,"R":7,"S":6,"U":8,"X":6,"a":6,"c":5,"e":6,"f":4,"g":6,"h":6,"i":3,"l":3,"m":10,"n":6,"o":6,"p":6,"r":4,"t":4,"v":5,"y":5},"12:700:italic":{" ":3,"(":4,")":4,"-":4,".":3,"0":6,"2":6,"3":6,":":3,"C":6,"D":8,"E":6,"G":8,"L":5,"M":10,"R":7,"S":6,"U":8,"X":7,"a":6,"c":5,"e":6,"f":4,"g":6,"h":6,"i":3,"l":3,"m":10,"n":6,"o":6,"p":6,"r":4,"t":4,"v":6,"y":6},"12:700:normal":{" ":3,"(":4,")":4,"-":4,".":3,"0":6,"2":6,"3":6,":":3,"C":6,"D":8,"E":6,"G":8,"L":5,"M":10,"R":7,"S":6,"U":8,"X":7,"a":6,"c":5,"e":6,"f":4,"g":6,"h":6,"i":3,"l":3,"m":10,"n":6,"o":6,"p":6,"r":4,"t":4,"v":6,"y":6},"13:400:italic":{" ":3,"(":4,")":4,"-":4,".":3,"0":7,"2":7,"3":7,":":3,"C":7,"D":8,"E":6,"G":8,"L":5,"M":11,"R":7,"S":6,"U":8,"X":7,"a":7,"c":5,"e":6,"f":4,"g":7,"h":7,"i":3,"l":3,"m":10,"n":7,"o":7,"p":7,"r":4,"t":4,"v":6,"y":6},"13:400:normal":{" ":3,"(":4,")":4,"-":4,".":3,"0":7,"2":7,"3":7,":":3,"C":7,"D":8,"E":6,"G":8,"L":5,"M":11,"R":7,"S":6,"U":8,"X":7,"a":6,"c":6,"e":6,"f":4,"g":6,"h":7,"i":3,"l":3,"m":10,"n":7,"o":7,"p":7,"r":5,"t":4,"v":6,"y":6},"13:700:italic":{" ":3,"(":4,")":4,"-":4,".":3,"0":7,"2":7,"3":7,":":4,"C":7,"D":8,"E":6,"G":8,"L":6,"M":11,"R":7,"S":6,"U":8,"X":7,"a":7,"c":5,"e":6,"f":4,"g":7,"h":7,"i":3,"l":3,"m":10,"n":7,"o":7,"p":7,"r":5,"t":5,"v":6,"y":6},"13:700:normal":{" ":3,"(":4,")":4,"-":4,".":3,"0":7,"2":7,"3":7,":":4,"C":7,"D":8,"E":6,"G":8,"L":6,"M":11,"R":7,"S":6,"U":8,"X":7,"a":6,"c":5,"e":7,"f":4,"g":6,"h":7,"i":3,"l":3,"m":11,"n":7,"o":7,"p":7,"r":5,"t":5,"v":6,"y":6},"14:400:italic":{" ":3,"(":4,")":4,"-":4,".":4,"0":7,"2":7,"3":7,":":4,"C":7,"D":9,"E":7,"G":9,"L":6,"M":12,"R":8,"S":6,"U":9,"X":7,"a":7,"c":6,"e":7,"f":4,"g":7,"h":7,"i":3,"l":3,"m":11,"n":7,"o":7,"p":7,"r":5,"t":5,"v":6,"y":6},"14:400:normal":{" ":3,"(":4,")":4,"-":4,".":4,"0":7,"2":7,"3":7,":":4,"C":7,"D":9,"E":7,"G":9,"L":6,"M":12,"R":8,"S":6,"U":9,"X":7,"a":7,"c":6,"e":7,"f":4,"g":7,"h":7,"i":3,"l":3,"m":11,"n":7,"o":7,"p":7,"r":5,"t":5,"v":6,"y":6},"14:700:italic":{" ":3,"(":4,")":4,"-":4,".":4,"0":7,"2":7,"3":7,":":4,"C":7,"D":9,"E":7,"G":9,"L":6,"M":12,"R":8,"S":7,"U":9,"X":8,"a":7,"c":6,"e":7,"f":4,"g":7,"h":7,"i":3,"l":3,"m":11,"n":7,"o":7,"p":7,"r":5,"t":5,"v":7,"y":7},"14:700:normal":{" ":3,"(":4,")":4,"-":4,".":4,"0":7,"2":7,"3":7,":":4,"C":7,"D":9,"E":7,"G":9,"L":6,"M":12,"R":8,"S":7,"U":9,"X":8,"a":7,"c":6,"e":7,"f":4,"g":7,"h":8,"i":3,"l":3,"m":11,"n":8,"o":8,"p":8,"r":5,"t":5,"v":7,"y":7},"17:400:italic":{" ":4,"(":5,")":5,"-":5,".":4,"0":9,"2":9,"3":9,":":5,"C":9,"D":10,"E":8,"G":11,"L":7,"M":15,"R":9,"S":8,"U":11,"X":9,"a":9,"c":7,"e":8,"f":5,"g":9,"h":9,"i":4,"l":4,"m":13,"n":9,"o":9,"p":9,"r":6,"t":6,"v":8,"y":8},"17:400:normal":{" ":4,"(":5,")":5,"-":5,".":4,"0":9,"2":9,"3":9,":":5,"C":9,"D":10,"E":8,"G":11,"L":7,"M":15,"R":9,"S":8,"U":11,"X":9,"a":8,"c":7,"e":8,"f":5,"g":8,"h":9,"i":4,"l":4,"m":14,"n":9,"o":9,"p":9,"r":6,"t":6,"v":8,"y":8},"17:700:italic":{" ":4,"(":5,")":5,"-":5,".":5,"0":9,"2":9,"3":9,":":5,"C":9,"D":11,"E":8,"G":11,"L":7,"M":15,"R":10,"S":8,"U":11,"X":9,"a":9,"c":7,"e":8,"f":5,"g":9,"h":9,"i":4,"l":4,"m":14,"n":9,"o":9,"p":9,"r":6,"t":6,"v":8,"y":8},"17:700:normal":{" ":4,"(":5,")":5,"-":5,".":5,"0":9,"2":9,"3":9,":":5,"C":9,"D":11,"E":8,"G":11,"L":7,"M":15,"R":10,"S":8,"U":11,"X":9,"a":8,"c":7,"e":9,"f":5,"g":8,"h":9,"i":4,"l":4,"m":14,"n":9,"o":9,"p":9,"r":6,"t":6,"v":8,"y":8}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"face":"MS UI Gothic","source":"GDI GetCharWidth32W at 96 DPI, Windows Server 2022, lutaml/ea run 39276232219","key":"logical height:weight:style","widths":{"10:400:italic":{"、":7,"。":7,"い":8,"う":6,"え":8,"が":8,"け":8,"こ":7,"さ":7,"し":7,"じ":7,"す":8,"そ":7,"た":8,"て":8,"で":8,"と":6,"な":9,"に":8,"の":8,"は":9,"び":8,"べ":8,"め":8,"よ":8,"り":6,"る":8,"れ":9,"を":8,"ん":8,"ク":7,"シ":8,"ス":8,"タ":7,"ッ":6,"デ":8,"ト":7,"ネ":8,"メ":7,"モ":8,"ュ":7,"ラ":7,"リ":6,"ル":8,"ン":7,"・":5,"ー":8,"上":10,"下":10,"交":10,"仕":10,"他":10,"位":10,"例":10,"修":10,"備":10,"傷":10,"元":10,"全":10,"内":10,"凡":10,"出":10,"利":10,"化":10,"区":10,"参":10,"及":10,"合":10,"噴":10,"因":10,"囲":10,"図":10,"土":10,"地":10,"埋":10,"域":10,"基":10,"堆":10,"堤":10,"報":10,"場":10,"壊":10,"定":10,"害":10,"層":10,"山":10,"崩":10,"川":10,"差":10,"市":10,"広":10,"建":10,"形":10,"徒":10,"情":10,"指":10,"損":10,"数":10,"施":10,"木":10,"本":10,"林":10,"査":10,"梁":10,"植":10,"構":10,"様":10,"橋":10,"次":10,"正":10,"歩":10,"民":10,"水":10,"決":10,"河":10,"泥":10,"洪":10,"流":10,"火":10,"災":10,"照":10,"物":10,"現":10,"生":10,"用":10,"画":10,"異":10,"盛":10,"石":10,"砂":10,"礎":10,"示":10,"積":10,"空":10,"範":10,"築":10,"系":10,"置":10,"義":10,"腹":10,"致":10,"航":10,"街":10,"表":10,"計":10,"設":10,"調":10,"起":10,"路":10,"通":10,"造":10,"道":10,"部":10,"都":10,"鉄":10,"間":10,"雪":10,"(":5,")":5},"10:400:normal":{"、":7,"。":7,"い":8,"う":6,"え":8,"が":8,"け":8,"こ":7,"さ":7,"し":7,"じ":7,"す":8,"そ":7,"た":8,"て":8,"で":8,"と":6,"な":9,"に":8,"の":8,"は":9,"び":8,"べ":8,"め":8,"よ":8,"り":6,"る":8,"れ":9,"を":8,"ん":8,"ク":7,"シ":8,"ス":8,"タ":7,"ッ":6,"デ":8,"ト":7,"ネ":8,"メ":7,"モ":8,"ュ":7,"ラ":7,"リ":6,"ル":8,"ン":7,"・":5,"ー":8,"上":10,"下":10,"交":10,"仕":10,"他":10,"位":10,"例":10,"修":10,"備":10,"傷":10,"元":10,"全":10,"内":10,"凡":10,"出":10,"利":10,"化":10,"区":10,"参":10,"及":10,"合":10,"噴":10,"因":10,"囲":10,"図":10,"土":10,"地":10,"埋":10,"域":10,"基":10,"堆":10,"堤":10,"報":10,"場":10,"壊":10,"定":10,"害":10,"層":10,"山":10,"崩":10,"川":10,"差":10,"市":10,"広":10,"建":10,"形":10,"徒":10,"情":10,"指":10,"損":10,"数":10,"施":10,"木":10,"本":10,"林":10,"査":10,"梁":10,"植":10,"構":10,"様":10,"橋":10,"次":10,"正":10,"歩":10,"民":10,"水":10,"決":10,"河":10,"泥":10,"洪":10,"流":10,"火":10,"災":10,"照":10,"物":10,"現":10,"生":10,"用":10,"画":10,"異":10,"盛":10,"石":10,"砂":10,"礎":10,"示":10,"積":10,"空":10,"範":10,"築":10,"系":10,"置":10,"義":10,"腹":10,"致":10,"航":10,"街":10,"表":10,"計":10,"設":10,"調":10,"起":10,"路":10,"通":10,"造":10,"道":10,"部":10,"都":10,"鉄":10,"間":10,"雪":10,"(":5,")":5},"10:700:italic":{"、":8,"。":8,"い":9,"う":7,"え":9,"が":9,"け":9,"こ":8,"さ":8,"し":8,"じ":8,"す":9,"そ":8,"た":9,"て":9,"で":9,"と":7,"な":10,"に":9,"の":9,"は":10,"び":9,"べ":9,"め":9,"よ":9,"り":7,"る":9,"れ":10,"を":9,"ん":9,"ク":8,"シ":9,"ス":9,"タ":8,"ッ":7,"デ":9,"ト":8,"ネ":9,"メ":8,"モ":9,"ュ":8,"ラ":8,"リ":7,"ル":9,"ン":8,"・":6,"ー":9,"上":11,"下":11,"交":11,"仕":11,"他":11,"位":11,"例":11,"修":11,"備":11,"傷":11,"元":11,"全":11,"内":11,"凡":11,"出":11,"利":11,"化":11,"区":11,"参":11,"及":11,"合":11,"噴":11,"因":11,"囲":11,"図":11,"土":11,"地":11,"埋":11,"域":11,"基":11,"堆":11,"堤":11,"報":11,"場":11,"壊":11,"定":11,"害":11,"層":11,"山":11,"崩":11,"川":11,"差":11,"市":11,"広":11,"建":11,"形":11,"徒":11,"情":11,"指":11,"損":11,"数":11,"施":11,"木":11,"本":11,"林":11,"査":11,"梁":11,"植":11,"構":11,"様":11,"橋":11,"次":11,"正":11,"歩":11,"民":11,"水":11,"決":11,"河":11,"泥":11,"洪":11,"流":11,"火":11,"災":11,"照":11,"物":11,"現":11,"生":11,"用":11,"画":11,"異":11,"盛":11,"石":11,"砂":11,"礎":11,"示":11,"積":11,"空":11,"範":11,"築":11,"系":11,"置":11,"義":11,"腹":11,"致":11,"航":11,"街":11,"表":11,"計":11,"設":11,"調":11,"起":11,"路":11,"通":11,"造":11,"道":11,"部":11,"都":11,"鉄":11,"間":11,"雪":11,"(":6,")":6},"10:700:normal":{"、":8,"。":8,"い":9,"う":7,"え":9,"が":9,"け":9,"こ":8,"さ":8,"し":8,"じ":8,"す":9,"そ":8,"た":9,"て":9,"で":9,"と":7,"な":10,"に":9,"の":9,"は":10,"び":9,"べ":9,"め":9,"よ":9,"り":7,"る":9,"れ":10,"を":9,"ん":9,"ク":8,"シ":9,"ス":9,"タ":8,"ッ":7,"デ":9,"ト":8,"ネ":9,"メ":8,"モ":9,"ュ":8,"ラ":8,"リ":7,"ル":9,"ン":8,"・":6,"ー":9,"上":11,"下":11,"交":11,"仕":11,"他":11,"位":11,"例":11,"修":11,"備":11,"傷":11,"元":11,"全":11,"内":11,"凡":11,"出":11,"利":11,"化":11,"区":11,"参":11,"及":11,"合":11,"噴":11,"因":11,"囲":11,"図":11,"土":11,"地":11,"埋":11,"域":11,"基":11,"堆":11,"堤":11,"報":11,"場":11,"壊":11,"定":11,"害":11,"層":11,"山":11,"崩":11,"川":11,"差":11,"市":11,"広":11,"建":11,"形":11,"徒":11,"情":11,"指":11,"損":11,"数":11,"施":11,"木":11,"本":11,"林":11,"査":11,"梁":11,"植":11,"構":11,"様":11,"橋":11,"次":11,"正":11,"歩":11,"民":11,"水":11,"決":11,"河":11,"泥":11,"洪":11,"流":11,"火":11,"災":11,"照":11,"物":11,"現":11,"生":11,"用":11,"画":11,"異":11,"盛":11,"石":11,"砂":11,"礎":11,"示":11,"積":11,"空":11,"範":11,"築":11,"系":11,"置":11,"義":11,"腹":11,"致":11,"航":11,"街":11,"表":11,"計":11,"設":11,"調":11,"起":11,"路":11,"通":11,"造":11,"道":11,"部":11,"都":11,"鉄":11,"間":11,"雪":11,"(":6,")":6},"12:400:italic":{"、":8,"。":8,"い":10,"う":7,"え":9,"が":10,"け":10,"こ":8,"さ":8,"し":9,"じ":9,"す":10,"そ":9,"た":9,"て":9,"で":10,"と":8,"な":10,"に":9,"の":10,"は":10,"び":10,"べ":10,"め":10,"よ":9,"り":8,"る":9,"れ":11,"を":9,"ん":10,"ク":8,"シ":10,"ス":9,"タ":8,"ッ":7,"デ":10,"ト":8,"ネ":10,"メ":8,"モ":9,"ュ":8,"ラ":8,"リ":7,"ル":10,"ン":9,"・":6,"ー":10,"上":12,"下":12,"交":12,"仕":12,"他":12,"位":12,"例":12,"修":12,"備":12,"傷":12,"元":12,"全":12,"内":12,"凡":12,"出":12,"利":12,"化":12,"区":12,"参":12,"及":12,"合":12,"噴":12,"因":12,"囲":12,"図":12,"土":12,"地":12,"埋":12,"域":12,"基":12,"堆":12,"堤":12,"報":12,"場":12,"壊":12,"定":12,"害":12,"層":12,"山":12,"崩":12,"川":12,"差":12,"市":12,"広":12,"建":12,"形":12,"徒":12,"情":12,"指":12,"損":12,"数":12,"施":12,"木":12,"本":12,"林":12,"査":12,"梁":12,"植":12,"構":12,"様":12,"橋":12,"次":12,"正":12,"歩":12,"民":12,"水":12,"決":12,"河":12,"泥":12,"洪":12,"流":12,"火":12,"災":12,"照":12,"物":12,"現":12,"生":12,"用":12,"画":12,"異":12,"盛":12,"石":12,"砂":12,"礎":12,"示":12,"積":12,"空":12,"範":12,"築":12,"系":12,"置":12,"義":12,"腹":12,"致":12,"航":12,"街":12,"表":12,"計":12,"設":12,"調":12,"起":12,"路":12,"通":12,"造":12,"道":12,"部":12,"都":12,"鉄":12,"間":12,"雪":12,"(":6,")":6},"12:400:normal":{"、":8,"。":8,"い":10,"う":7,"え":9,"が":10,"け":10,"こ":8,"さ":8,"し":9,"じ":9,"す":10,"そ":9,"た":9,"て":9,"で":10,"と":8,"な":10,"に":9,"の":10,"は":10,"び":10,"べ":10,"め":10,"よ":9,"り":8,"る":9,"れ":11,"を":9,"ん":10,"ク":8,"シ":10,"ス":9,"タ":8,"ッ":7,"デ":10,"ト":8,"ネ":10,"メ":8,"モ":9,"ュ":8,"ラ":8,"リ":7,"ル":10,"ン":9,"・":6,"ー":10,"上":12,"下":12,"交":12,"仕":12,"他":12,"位":12,"例":12,"修":12,"備":12,"傷":12,"元":12,"全":12,"内":12,"凡":12,"出":12,"利":12,"化":12,"区":12,"参":12,"及":12,"合":12,"噴":12,"因":12,"囲":12,"図":12,"土":12,"地":12,"埋":12,"域":12,"基":12,"堆":12,"堤":12,"報":12,"場":12,"壊":12,"定":12,"害":12,"層":12,"山":12,"崩":12,"川":12,"差":12,"市":12,"広":12,"建":12,"形":12,"徒":12,"情":12,"指":12,"損":12,"数":12,"施":12,"木":12,"本":12,"林":12,"査":12,"梁":12,"植":12,"構":12,"様":12,"橋":12,"次":12,"正":12,"歩":12,"民":12,"水":12,"決":12,"河":12,"泥":12,"洪":12,"流":12,"火":12,"災":12,"照":12,"物":12,"現":12,"生":12,"用":12,"画":12,"異":12,"盛":12,"石":12,"砂":12,"礎":12,"示":12,"積":12,"空":12,"範":12,"築":12,"系":12,"置":12,"義":12,"腹":12,"致":12,"航":12,"街":12,"表":12,"計":12,"設":12,"調":12,"起":12,"路":12,"通":12,"造":12,"道":12,"部":12,"都":12,"鉄":12,"間":12,"雪":12,"(":6,")":6},"12:700:italic":{"、":9,"。":9,"い":11,"う":8,"え":10,"が":11,"け":11,"こ":9,"さ":9,"し":10,"じ":10,"す":11,"そ":10,"た":10,"て":10,"で":11,"と":9,"な":11,"に":10,"の":11,"は":11,"び":11,"べ":11,"め":11,"よ":10,"り":9,"る":10,"れ":12,"を":10,"ん":11,"ク":9,"シ":11,"ス":10,"タ":9,"ッ":8,"デ":11,"ト":9,"ネ":11,"メ":9,"モ":10,"ュ":9,"ラ":9,"リ":8,"ル":11,"ン":10,"・":7,"ー":11,"上":13,"下":13,"交":13,"仕":13,"他":13,"位":13,"例":13,"修":13,"備":13,"傷":13,"元":13,"全":13,"内":13,"凡":13,"出":13,"利":13,"化":13,"区":13,"参":13,"及":13,"合":13,"噴":13,"因":13,"囲":13,"図":13,"土":13,"地":13,"埋":13,"域":13,"基":13,"堆":13,"堤":13,"報":13,"場":13,"壊":13,"定":13,"害":13,"層":13,"山":13,"崩":13,"川":13,"差":13,"市":13,"広":13,"建":13,"形":13,"徒":13,"情":13,"指":13,"損":13,"数":13,"施":13,"木":13,"本":13,"林":13,"査":13,"梁":13,"植":13,"構":13,"様":13,"橋":13,"次":13,"正":13,"歩":13,"民":13,"水":13,"決":13,"河":13,"泥":13,"洪":13,"流":13,"火":13,"災":13,"照":13,"物":13,"現":13,"生":13,"用":13,"画":13,"異":13,"盛":13,"石":13,"砂":13,"礎":13,"示":13,"積":13,"空":13,"範":13,"築":13,"系":13,"置":13,"義":13,"腹":13,"致":13,"航":13,"街":13,"表":13,"計":13,"設":13,"調":13,"起":13,"路":13,"通":13,"造":13,"道":13,"部":13,"都":13,"鉄":13,"間":13,"雪":13,"(":7,")":7},"12:700:normal":{"、":9,"。":9,"い":11,"う":8,"え":10,"が":11,"け":11,"こ":9,"さ":9,"し":10,"じ":10,"す":11,"そ":10,"た":10,"て":10,"で":11,"と":9,"な":11,"に":10,"の":11,"は":11,"び":11,"べ":11,"め":11,"よ":10,"り":9,"る":10,"れ":12,"を":10,"ん":11,"ク":9,"シ":11,"ス":10,"タ":9,"ッ":8,"デ":11,"ト":9,"ネ":11,"メ":9,"モ":10,"ュ":9,"ラ":9,"リ":8,"ル":11,"ン":10,"・":7,"ー":11,"上":13,"下":13,"交":13,"仕":13,"他":13,"位":13,"例":13,"修":13,"備":13,"傷":13,"元":13,"全":13,"内":13,"凡":13,"出":13,"利":13,"化":13,"区":13,"参":13,"及":13,"合":13,"噴":13,"因":13,"囲":13,"図":13,"土":13,"地":13,"埋":13,"域":13,"基":13,"堆":13,"堤":13,"報":13,"場":13,"壊":13,"定":13,"害":13,"層":13,"山":13,"崩":13,"川":13,"差":13,"市":13,"広":13,"建":13,"形":13,"徒":13,"情":13,"指":13,"損":13,"数":13,"施":13,"木":13,"本":13,"林":13,"査":13,"梁":13,"植":13,"構":13,"様":13,"橋":13,"次":13,"正":13,"歩":13,"民":13,"水":13,"決":13,"河":13,"泥":13,"洪":13,"流":13,"火":13,"災":13,"照":13,"物":13,"現":13,"生":13,"用":13,"画":13,"異":13,"盛":13,"石":13,"砂":13,"礎":13,"示":13,"積":13,"空":13,"範":13,"築":13,"系":13,"置":13,"義":13,"腹":13,"致":13,"航":13,"街":13,"表":13,"計":13,"設":13,"調":13,"起":13,"路":13,"通":13,"造":13,"道":13,"部":13,"都":13,"鉄":13,"間":13,"雪":13,"(":7,")":7},"13:400:italic":{"、":9,"。":9,"い":11,"う":8,"え":10,"が":11,"け":11,"こ":9,"さ":9,"し":9,"じ":9,"す":11,"そ":10,"た":10,"て":10,"で":11,"と":8,"な":11,"に":10,"の":11,"は":11,"び":11,"べ":11,"め":11,"よ":10,"り":8,"る":10,"れ":12,"を":10,"ん":11,"ク":9,"シ":11,"ス":10,"タ":9,"ッ":8,"デ":11,"ト":9,"ネ":11,"メ":9,"モ":10,"ュ":9,"ラ":9,"リ":8,"ル":11,"ン":10,"・":7,"ー":11,"上":13,"下":13,"交":13,"仕":13,"他":13,"位":13,"例":13,"修":13,"備":13,"傷":13,"元":13,"全":13,"内":13,"凡":13,"出":13,"利":13,"化":13,"区":13,"参":13,"及":13,"合":13,"噴":13,"因":13,"囲":13,"図":13,"土":13,"地":13,"埋":13,"域":13,"基":13,"堆":13,"堤":13,"報":13,"場":13,"壊":13,"定":13,"害":13,"層":13,"山":13,"崩":13,"川":13,"差":13,"市":13,"広":13,"建":13,"形":13,"徒":13,"情":13,"指":13,"損":13,"数":13,"施":13,"木":13,"本":13,"林":13,"査":13,"梁":13,"植":13,"構":13,"様":13,"橋":13,"次":13,"正":13,"歩":13,"民":13,"水":13,"決":13,"河":13,"泥":13,"洪":13,"流":13,"火":13,"災":13,"照":13,"物":13,"現":13,"生":13,"用":13,"画":13,"異":13,"盛":13,"石":13,"砂":13,"礎":13,"示":13,"積":13,"空":13,"範":13,"築":13,"系":13,"置":13,"義":13,"腹":13,"致":13,"航":13,"街":13,"表":13,"計":13,"設":13,"調":13,"起":13,"路":13,"通":13,"造":13,"道":13,"部":13,"都":13,"鉄":13,"間":13,"雪":13,"(":7,")":7},"13:400:normal":{"、":9,"。":9,"い":11,"う":8,"え":10,"が":11,"け":11,"こ":9,"さ":9,"し":9,"じ":9,"す":11,"そ":10,"た":10,"て":10,"で":11,"と":8,"な":11,"に":10,"の":11,"は":11,"び":11,"べ":11,"め":11,"よ":10,"り":8,"る":10,"れ":12,"を":10,"ん":11,"ク":9,"シ":11,"ス":10,"タ":9,"ッ":8,"デ":11,"ト":9,"ネ":11,"メ":9,"モ":10,"ュ":9,"ラ":9,"リ":8,"ル":11,"ン":10,"・":7,"ー":11,"上":13,"下":13,"交":13,"仕":13,"他":13,"位":13,"例":13,"修":13,"備":13,"傷":13,"元":13,"全":13,"内":13,"凡":13,"出":13,"利":13,"化":13,"区":13,"参":13,"及":13,"合":13,"噴":13,"因":13,"囲":13,"図":13,"土":13,"地":13,"埋":13,"域":13,"基":13,"堆":13,"堤":13,"報":13,"場":13,"壊":13,"定":13,"害":13,"層":13,"山":13,"崩":13,"川":13,"差":13,"市":13,"広":13,"建":13,"形":13,"徒":13,"情":13,"指":13,"損":13,"数":13,"施":13,"木":13,"本":13,"林":13,"査":13,"梁":13,"植":13,"構":13,"様":13,"橋":13,"次":13,"正":13,"歩":13,"民":13,"水":13,"決":13,"河":13,"泥":13,"洪":13,"流":13,"火":13,"災":13,"照":13,"物":13,"現":13,"生":13,"用":13,"画":13,"異":13,"盛":13,"石":13,"砂":13,"礎":13,"示":13,"積":13,"空":13,"範":13,"築":13,"系":13,"置":13,"義":13,"腹":13,"致":13,"航":13,"街":13,"表":13,"計":13,"設":13,"調":13,"起":13,"路":13,"通":13,"造":13,"道":13,"部":13,"都":13,"鉄":13,"間":13,"雪":13,"(":7,")":7},"13:700:italic":{"、":10,"。":10,"い":12,"う":9,"え":11,"が":12,"け":12,"こ":10,"さ":10,"し":10,"じ":10,"す":12,"そ":11,"た":11,"て":11,"で":12,"と":9,"な":12,"に":11,"の":12,"は":12,"び":12,"べ":12,"め":12,"よ":11,"り":9,"る":11,"れ":13,"を":11,"ん":12,"ク":10,"シ":12,"ス":11,"タ":10,"ッ":9,"デ":12,"ト":10,"ネ":12,"メ":10,"モ":11,"ュ":10,"ラ":10,"リ":9,"ル":12,"ン":11,"・":8,"ー":12,"上":14,"下":14,"交":14,"仕":14,"他":14,"位":14,"例":14,"修":14,"備":14,"傷":14,"元":14,"全":14,"内":14,"凡":14,"出":14,"利":14,"化":14,"区":14,"参":14,"及":14,"合":14,"噴":14,"因":14,"囲":14,"図":14,"土":14,"地":14,"埋":14,"域":14,"基":14,"堆":14,"堤":14,"報":14,"場":14,"壊":14,"定":14,"害":14,"層":14,"山":14,"崩":14,"川":14,"差":14,"市":14,"広":14,"建":14,"形":14,"徒":14,"情":14,"指":14,"損":14,"数":14,"施":14,"木":14,"本":14,"林":14,"査":14,"梁":14,"植":14,"構":14,"様":14,"橋":14,"次":14,"正":14,"歩":14,"民":14,"水":14,"決":14,"河":14,"泥":14,"洪":14,"流":14,"火":14,"災":14,"照":14,"物":14,"現":14,"生":14,"用":14,"画":14,"異":14,"盛":14,"石":14,"砂":14,"礎":14,"示":14,"積":14,"空":14,"範":14,"築":14,"系":14,"置":14,"義":14,"腹":14,"致":14,"航":14,"街":14,"表":14,"計":14,"設":14,"調":14,"起":14,"路":14,"通":14,"造":14,"道":14,"部":14,"都":14,"鉄":14,"間":14,"雪":14,"(":8,")":8},"13:700:normal":{"、":10,"。":10,"い":12,"う":9,"え":11,"が":12,"け":12,"こ":10,"さ":10,"し":10,"じ":10,"す":12,"そ":11,"た":11,"て":11,"で":12,"と":9,"な":12,"に":11,"の":12,"は":12,"び":12,"べ":12,"め":12,"よ":11,"り":9,"る":11,"れ":13,"を":11,"ん":12,"ク":10,"シ":12,"ス":11,"タ":10,"ッ":9,"デ":12,"ト":10,"ネ":12,"メ":10,"モ":11,"ュ":10,"ラ":10,"リ":9,"ル":12,"ン":11,"・":8,"ー":12,"上":14,"下":14,"交":14,"仕":14,"他":14,"位":14,"例":14,"修":14,"備":14,"傷":14,"元":14,"全":14,"内":14,"凡":14,"出":14,"利":14,"化":14,"区":14,"参":14,"及":14,"合":14,"噴":14,"因":14,"囲":14,"図":14,"土":14,"地":14,"埋":14,"域":14,"基":14,"堆":14,"堤":14,"報":14,"場":14,"壊":14,"定":14,"害":14,"層":14,"山":14,"崩":14,"川":14,"差":14,"市":14,"広":14,"建":14,"形":14,"徒":14,"情":14,"指":14,"損":14,"数":14,"施":14,"木":14,"本":14,"林":14,"査":14,"梁":14,"植":14,"構":14,"様":14,"橋":14,"次":14,"正":14,"歩":14,"民":14,"水":14,"決":14,"河":14,"泥":14,"洪":14,"流":14,"火":14,"災":14,"照":14,"物":14,"現":14,"生":14,"用":14,"画":14,"異":14,"盛":14,"石":14,"砂":14,"礎":14,"示":14,"積":14,"空":14,"範":14,"築":14,"系":14,"置":14,"義":14,"腹":14,"致":14,"航":14,"街":14,"表":14,"計":14,"設":14,"調":14,"起":14,"路":14,"通":14,"造":14,"道":14,"部":14,"都":14,"鉄":14,"間":14,"雪":14,"(":8,")":8},"14:400:italic":{"、":9,"。":9,"い":11,"う":8,"え":11,"が":12,"け":11,"こ":10,"さ":10,"し":10,"じ":10,"す":12,"そ":10,"た":11,"て":11,"で":11,"と":9,"な":12,"に":11,"の":11,"は":12,"び":12,"べ":11,"め":11,"よ":11,"り":9,"る":11,"れ":12,"を":11,"ん":11,"ク":10,"シ":11,"ス":11,"タ":10,"ッ":8,"デ":11,"ト":10,"ネ":11,"メ":10,"モ":11,"ュ":9,"ラ":10,"リ":8,"ル":11,"ン":10,"・":7,"ー":11,"上":14,"下":14,"交":14,"仕":14,"他":14,"位":14,"例":14,"修":14,"備":14,"傷":14,"元":14,"全":14,"内":14,"凡":14,"出":14,"利":14,"化":14,"区":14,"参":14,"及":14,"合":14,"噴":14,"因":14,"囲":14,"図":14,"土":14,"地":14,"埋":14,"域":14,"基":14,"堆":14,"堤":14,"報":14,"場":14,"壊":14,"定":14,"害":14,"層":14,"山":14,"崩":14,"川":14,"差":14,"市":14,"広":14,"建":14,"形":14,"徒":14,"情":14,"指":14,"損":14,"数":14,"施":14,"木":14,"本":14,"林":14,"査":14,"梁":14,"植":14,"構":14,"様":14,"橋":14,"次":14,"正":14,"歩":14,"民":14,"水":14,"決":14,"河":14,"泥":14,"洪":14,"流":14,"火":14,"災":14,"照":14,"物":14,"現":14,"生":14,"用":14,"画":14,"異":14,"盛":14,"石":14,"砂":14,"礎":14,"示":14,"積":14,"空":14,"範":14,"築":14,"系":14,"置":14,"義":14,"腹":14,"致":14,"航":14,"街":14,"表":14,"計":14,"設":14,"調":14,"起":14,"路":14,"通":14,"造":14,"道":14,"部":14,"都":14,"鉄":14,"間":14,"雪":14,"(":7,")":7},"14:400:normal":{"、":9,"。":9,"い":11,"う":8,"え":11,"が":12,"け":11,"こ":10,"さ":10,"し":10,"じ":10,"す":12,"そ":10,"た":11,"て":11,"で":11,"と":9,"な":12,"に":11,"の":11,"は":12,"び":12,"べ":11,"め":11,"よ":11,"り":9,"る":11,"れ":12,"を":11,"ん":11,"ク":10,"シ":11,"ス":11,"タ":10,"ッ":8,"デ":11,"ト":10,"ネ":11,"メ":10,"モ":11,"ュ":9,"ラ":10,"リ":8,"ル":11,"ン":10,"・":7,"ー":11,"上":14,"下":14,"交":14,"仕":14,"他":14,"位":14,"例":14,"修":14,"備":14,"傷":14,"元":14,"全":14,"内":14,"凡":14,"出":14,"利":14,"化":14,"区":14,"参":14,"及":14,"合":14,"噴":14,"因":14,"囲":14,"図":14,"土":14,"地":14,"埋":14,"域":14,"基":14,"堆":14,"堤":14,"報":14,"場":14,"壊":14,"定":14,"害":14,"層":14,"山":14,"崩":14,"川":14,"差":14,"市":14,"広":14,"建":14,"形":14,"徒":14,"情":14,"指":14,"損":14,"数":14,"施":14,"木":14,"本":14,"林":14,"査":14,"梁":14,"植":14,"構":14,"様":14,"橋":14,"次":14,"正":14,"歩":14,"民":14,"水":14,"決":14,"河":14,"泥":14,"洪":14,"流":14,"火":14,"災":14,"照":14,"物":14,"現":14,"生":14,"用":14,"画":14,"異":14,"盛":14,"石":14,"砂":14,"礎":14,"示":14,"積":14,"空":14,"範":14,"築":14,"系":14,"置":14,"義":14,"腹":14,"致":14,"航":14,"街":14,"表":14,"計":14,"設":14,"調":14,"起":14,"路":14,"通":14,"造":14,"道":14,"部":14,"都":14,"鉄":14,"間":14,"雪":14,"(":7,")":7},"14:700:italic":{"、":10,"。":10,"い":12,"う":9,"え":12,"が":13,"け":12,"こ":11,"さ":11,"し":11,"じ":11,"す":13,"そ":11,"た":12,"て":12,"で":12,"と":10,"な":13,"に":12,"の":12,"は":13,"び":13,"べ":12,"め":12,"よ":12,"り":10,"る":12,"れ":13,"を":12,"ん":12,"ク":11,"シ":12,"ス":12,"タ":11,"ッ":9,"デ":12,"ト":11,"ネ":12,"メ":11,"モ":12,"ュ":10,"ラ":11,"リ":9,"ル":12,"ン":11,"・":8,"ー":12,"上":15,"下":15,"交":15,"仕":15,"他":15,"位":15,"例":15,"修":15,"備":15,"傷":15,"元":15,"全":15,"内":15,"凡":15,"出":15,"利":15,"化":15,"区":15,"参":15,"及":15,"合":15,"噴":15,"因":15,"囲":15,"図":15,"土":15,"地":15,"埋":15,"域":15,"基":15,"堆":15,"堤":15,"報":15,"場":15,"壊":15,"定":15,"害":15,"層":15,"山":15,"崩":15,"川":15,"差":15,"市":15,"広":15,"建":15,"形":15,"徒":15,"情":15,"指":15,"損":15,"数":15,"施":15,"木":15,"本":15,"林":15,"査":15,"梁":15,"植":15,"構":15,"様":15,"橋":15,"次":15,"正":15,"歩":15,"民":15,"水":15,"決":15,"河":15,"泥":15,"洪":15,"流":15,"火":15,"災":15,"照":15,"物":15,"現":15,"生":15,"用":15,"画":15,"異":15,"盛":15,"石":15,"砂":15,"礎":15,"示":15,"積":15,"空":15,"範":15,"築":15,"系":15,"置":15,"義":15,"腹":15,"致":15,"航":15,"街":15,"表":15,"計":15,"設":15,"調":15,"起":15,"路":15,"通":15,"造":15,"道":15,"部":15,"都":15,"鉄":15,"間":15,"雪":15,"(":8,")":8},"14:700:normal":{"、":10,"。":10,"い":12,"う":9,"え":12,"が":13,"け":12,"こ":11,"さ":11,"し":11,"じ":11,"す":13,"そ":11,"た":12,"て":12,"で":12,"と":10,"な":13,"に":12,"の":12,"は":13,"び":13,"べ":12,"め":12,"よ":12,"り":10,"る":12,"れ":13,"を":12,"ん":12,"ク":11,"シ":12,"ス":12,"タ":11,"ッ":9,"デ":12,"ト":11,"ネ":12,"メ":11,"モ":12,"ュ":10,"ラ":11,"リ":9,"ル":12,"ン":11,"・":8,"ー":12,"上":15,"下":15,"交":15,"仕":15,"他":15,"位":15,"例":15,"修":15,"備":15,"傷":15,"元":15,"全":15,"内":15,"凡":15,"出":15,"利":15,"化":15,"区":15,"参":15,"及":15,"合":15,"噴":15,"因":15,"囲":15,"図":15,"土":15,"地":15,"埋":15,"域":15,"基":15,"堆":15,"堤":15,"報":15,"場":15,"壊":15,"定":15,"害":15,"層":15,"山":15,"崩":15,"川":15,"差":15,"市":15,"広":15,"建":15,"形":15,"徒":15,"情":15,"指":15,"損":15,"数":15,"施":15,"木":15,"本":15,"林":15,"査":15,"梁":15,"植":15,"構":15,"様":15,"橋":15,"次":15,"正":15,"歩":15,"民":15,"水":15,"決":15,"河":15,"泥":15,"洪":15,"流":15,"火":15,"災":15,"照":15,"物":15,"現":15,"生":15,"用":15,"画":15,"異":15,"盛":15,"石":15,"砂":15,"礎":15,"示":15,"積":15,"空":15,"範":15,"築":15,"系":15,"置":15,"義":15,"腹":15,"致":15,"航":15,"街":15,"表":15,"計":15,"設":15,"調":15,"起":15,"路":15,"通":15,"造":15,"道":15,"部":15,"都":15,"鉄":15,"間":15,"雪":15,"(":8,")":8},"17:400:italic":{"、":11,"。":11,"い":14,"う":10,"え":13,"が":14,"け":14,"こ":12,"さ":12,"し":12,"じ":12,"す":14,"そ":13,"た":13,"て":13,"で":14,"と":11,"な":15,"に":13,"の":14,"は":15,"び":14,"べ":14,"め":14,"よ":13,"り":11,"る":13,"れ":15,"を":13,"ん":14,"ク":12,"シ":14,"ス":13,"タ":12,"ッ":10,"デ":14,"ト":12,"ネ":14,"メ":12,"モ":13,"ュ":11,"ラ":12,"リ":10,"ル":14,"ン":13,"・":9,"ー":14,"上":17,"下":17,"交":17,"仕":17,"他":17,"位":17,"例":17,"修":17,"備":17,"傷":17,"元":17,"全":17,"内":17,"凡":17,"出":17,"利":17,"化":17,"区":17,"参":17,"及":17,"合":17,"噴":17,"因":17,"囲":17,"図":17,"土":17,"地":17,"埋":17,"域":17,"基":17,"堆":17,"堤":17,"報":17,"場":17,"壊":17,"定":17,"害":17,"層":17,"山":17,"崩":17,"川":17,"差":17,"市":17,"広":17,"建":17,"形":17,"徒":17,"情":17,"指":17,"損":17,"数":17,"施":17,"木":17,"本":17,"林":17,"査":17,"梁":17,"植":17,"構":17,"様":17,"橋":17,"次":17,"正":17,"歩":17,"民":17,"水":17,"決":17,"河":17,"泥":17,"洪":17,"流":17,"火":17,"災":17,"照":17,"物":17,"現":17,"生":17,"用":17,"画":17,"異":17,"盛":17,"石":17,"砂":17,"礎":17,"示":17,"積":17,"空":17,"範":17,"築":17,"系":17,"置":17,"義":17,"腹":17,"致":17,"航":17,"街":17,"表":17,"計":17,"設":17,"調":17,"起":17,"路":17,"通":17,"造":17,"道":17,"部":17,"都":17,"鉄":17,"間":17,"雪":17,"(":9,")":9},"17:400:normal":{"、":11,"。":11,"い":14,"う":10,"え":13,"が":14,"け":14,"こ":12,"さ":12,"し":12,"じ":12,"す":14,"そ":13,"た":13,"て":13,"で":14,"と":11,"な":15,"に":13,"の":14,"は":15,"び":14,"べ":14,"め":14,"よ":13,"り":11,"る":13,"れ":15,"を":13,"ん":14,"ク":12,"シ":14,"ス":13,"タ":12,"ッ":10,"デ":14,"ト":12,"ネ":14,"メ":12,"モ":13,"ュ":11,"ラ":12,"リ":10,"ル":14,"ン":13,"・":9,"ー":14,"上":17,"下":17,"交":17,"仕":17,"他":17,"位":17,"例":17,"修":17,"備":17,"傷":17,"元":17,"全":17,"内":17,"凡":17,"出":17,"利":17,"化":17,"区":17,"参":17,"及":17,"合":17,"噴":17,"因":17,"囲":17,"図":17,"土":17,"地":17,"埋":17,"域":17,"基":17,"堆":17,"堤":17,"報":17,"場":17,"壊":17,"定":17,"害":17,"層":17,"山":17,"崩":17,"川":17,"差":17,"市":17,"広":17,"建":17,"形":17,"徒":17,"情":17,"指":17,"損":17,"数":17,"施":17,"木":17,"本":17,"林":17,"査":17,"梁":17,"植":17,"構":17,"様":17,"橋":17,"次":17,"正":17,"歩":17,"民":17,"水":17,"決":17,"河":17,"泥":17,"洪":17,"流":17,"火":17,"災":17,"照":17,"物":17,"現":17,"生":17,"用":17,"画":17,"異":17,"盛":17,"石":17,"砂":17,"礎":17,"示":17,"積":17,"空":17,"範":17,"築":17,"系":17,"置":17,"義":17,"腹":17,"致":17,"航":17,"街":17,"表":17,"計":17,"設":17,"調":17,"起":17,"路":17,"通":17,"造":17,"道":17,"部":17,"都":17,"鉄":17,"間":17,"雪":17,"(":9,")":9},"17:700:italic":{"、":12,"。":12,"い":15,"う":11,"え":14,"が":15,"け":15,"こ":13,"さ":13,"し":13,"じ":13,"す":15,"そ":14,"た":14,"て":14,"で":15,"と":12,"な":16,"に":14,"の":15,"は":16,"び":15,"べ":15,"め":15,"よ":14,"り":12,"る":14,"れ":16,"を":14,"ん":15,"ク":13,"シ":15,"ス":14,"タ":13,"ッ":11,"デ":15,"ト":13,"ネ":15,"メ":13,"モ":14,"ュ":12,"ラ":13,"リ":11,"ル":15,"ン":14,"・":10,"ー":15,"上":18,"下":18,"交":18,"仕":18,"他":18,"位":18,"例":18,"修":18,"備":18,"傷":18,"元":18,"全":18,"内":18,"凡":18,"出":18,"利":18,"化":18,"区":18,"参":18,"及":18,"合":18,"噴":18,"因":18,"囲":18,"図":18,"土":18,"地":18,"埋":18,"域":18,"基":18,"堆":18,"堤":18,"報":18,"場":18,"壊":18,"定":18,"害":18,"層":18,"山":18,"崩":18,"川":18,"差":18,"市":18,"広":18,"建":18,"形":18,"徒":18,"情":18,"指":18,"損":18,"数":18,"施":18,"木":18,"本":18,"林":18,"査":18,"梁":18,"植":18,"構":18,"様":18,"橋":18,"次":18,"正":18,"歩":18,"民":18,"水":18,"決":18,"河":18,"泥":18,"洪":18,"流":18,"火":18,"災":18,"照":18,"物":18,"現":18,"生":18,"用":18,"画":18,"異":18,"盛":18,"石":18,"砂":18,"礎":18,"示":18,"積":18,"空":18,"範":18,"築":18,"系":18,"置":18,"義":18,"腹":18,"致":18,"航":18,"街":18,"表":18,"計":18,"設":18,"調":18,"起":18,"路":18,"通":18,"造":18,"道":18,"部":18,"都":18,"鉄":18,"間":18,"雪":18,"(":10,")":10},"17:700:normal":{"、":12,"。":12,"い":15,"う":11,"え":14,"が":15,"け":15,"こ":13,"さ":13,"し":13,"じ":13,"す":15,"そ":14,"た":14,"て":14,"で":15,"と":12,"な":16,"に":14,"の":15,"は":16,"び":15,"べ":15,"め":15,"よ":14,"り":12,"る":14,"れ":16,"を":14,"ん":15,"ク":13,"シ":15,"ス":14,"タ":13,"ッ":11,"デ":15,"ト":13,"ネ":15,"メ":13,"モ":14,"ュ":12,"ラ":13,"リ":11,"ル":15,"ン":14,"・":10,"ー":15,"上":18,"下":18,"交":18,"仕":18,"他":18,"位":18,"例":18,"修":18,"備":18,"傷":18,"元":18,"全":18,"内":18,"凡":18,"出":18,"利":18,"化":18,"区":18,"参":18,"及":18,"合":18,"噴":18,"因":18,"囲":18,"図":18,"土":18,"地":18,"埋":18,"域":18,"基":18,"堆":18,"堤":18,"報":18,"場":18,"壊":18,"定":18,"害":18,"層":18,"山":18,"崩":18,"川":18,"差":18,"市":18,"広":18,"建":18,"形":18,"徒":18,"情":18,"指":18,"損":18,"数":18,"施":18,"木":18,"本":18,"林":18,"査":18,"梁":18,"植":18,"構":18,"様":18,"橋":18,"次":18,"正":18,"歩":18,"民":18,"水":18,"決":18,"河":18,"泥":18,"洪":18,"流":18,"火":18,"災":18,"照":18,"物":18,"現":18,"生":18,"用":18,"画":18,"異":18,"盛":18,"石":18,"砂":18,"礎":18,"示":18,"積":18,"空":18,"範":18,"築":18,"系":18,"置":18,"義":18,"腹":18,"致":18,"航":18,"街":18,"表":18,"計":18,"設":18,"調":18,"起":18,"路":18,"通":18,"造":18,"道":18,"部":18,"都":18,"鉄":18,"間":18,"雪":18,"(":10,")":10}}}
|
data/lib/ea/fonts/metrics.rb
CHANGED
|
@@ -45,8 +45,28 @@ module Ea
|
|
|
45
45
|
File.expand_path("cambria_7_styled_widths.json", __dir__)
|
|
46
46
|
)).freeze
|
|
47
47
|
CAMBRIA_7_GUILLEMET_PAIR_WIDTH = 10
|
|
48
|
+
# Per-family OS/2 win metrics and, where the font has one, its
|
|
49
|
+
# 1:1 VDMX table (ppem => [ascent, descent] in pixels), read
|
|
50
|
+
# from the font files named in each entry's version.
|
|
51
|
+
VERTICAL_METRICS = JSON.parse(File.read(
|
|
52
|
+
File.expand_path("vertical_metrics.json", __dir__)
|
|
53
|
+
)).freeze
|
|
54
|
+
# Carlito and Cambria have no CJK glyphs. EA's CJK widths for them
|
|
55
|
+
# match MS UI Gothic's GDI advances, measured on Windows per
|
|
56
|
+
# "height:weight:style"; that match does not prove the linked face.
|
|
57
|
+
CJK_FALLBACK_WIDTHS = JSON.parse(File.read(
|
|
58
|
+
File.expand_path("cjk_fallback_widths.json", __dir__)
|
|
59
|
+
)).fetch("widths").freeze
|
|
60
|
+
CJK_FALLBACK_FAMILIES = %w[Carlito Cambria].freeze
|
|
61
|
+
# Carlito ASCII advances measured on Windows per "height:weight:style";
|
|
62
|
+
# they take precedence over the quantized design advances.
|
|
63
|
+
CARLITO_GDI_WIDTHS = JSON.parse(File.read(
|
|
64
|
+
File.expand_path("carlito_gdi_widths.json", __dir__)
|
|
65
|
+
)).fetch("widths").freeze
|
|
48
66
|
private_constant :CAMBRIA_7_REGULAR_WIDTHS, :CAMBRIA_7_STYLED_WIDTHS,
|
|
49
|
-
:CAMBRIA_7_GUILLEMET_PAIR_WIDTH
|
|
67
|
+
:CAMBRIA_7_GUILLEMET_PAIR_WIDTH, :VERTICAL_METRICS,
|
|
68
|
+
:CJK_FALLBACK_WIDTHS, :CJK_FALLBACK_FAMILIES,
|
|
69
|
+
:CARLITO_GDI_WIDTHS
|
|
50
70
|
|
|
51
71
|
# Advance used for codepoints missing from the tables.
|
|
52
72
|
DEFAULT_ADVANCE = 0.25
|
|
@@ -54,11 +74,9 @@ module Ea
|
|
|
54
74
|
# Inferred subpixel steps that reproduce EA's near-half-pixel rounding.
|
|
55
75
|
GDI_SUBPIXELS = 64
|
|
56
76
|
|
|
57
|
-
#
|
|
58
|
-
#
|
|
59
|
-
#
|
|
60
|
-
# fitted from EA-published textLengths (52 mixed-script
|
|
61
|
-
# samples).
|
|
77
|
+
# Advance for CJK glyphs with no measured fallback width: ~0.709em
|
|
78
|
+
# at the NOMINAL size (not scaled by the per-style factors),
|
|
79
|
+
# fitted from EA-published textLengths (52 mixed-script samples).
|
|
62
80
|
CJK_ADVANCE = 0.709
|
|
63
81
|
CJK_RANGES = [
|
|
64
82
|
(0x3000..0x303F), # CJK punctuation
|
|
@@ -92,6 +110,20 @@ module Ea
|
|
|
92
110
|
(size.to_f * 10 / 7).round
|
|
93
111
|
end
|
|
94
112
|
|
|
113
|
+
# GDI text-cell [ascent, descent] in pixels at logical height
|
|
114
|
+
# `height`: the VDMX entry when the font has one (GDI prefers it
|
|
115
|
+
# for hinted fonts), else the rounded usWinAscent/usWinDescent.
|
|
116
|
+
# Nil when the family has no vertical data.
|
|
117
|
+
def gdi_cell_metrics(family, height)
|
|
118
|
+
data = VERTICAL_METRICS[resolve_family(family)]
|
|
119
|
+
return nil unless data && height
|
|
120
|
+
|
|
121
|
+
data.fetch("vdmx", {})[height.to_s] ||
|
|
122
|
+
[data["win_ascent"], data["win_descent"]].map do |units|
|
|
123
|
+
(units * height.to_f / data["units_per_em"]).round
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
95
127
|
# Quantize before rounding: near-half-pixel Carlito advances
|
|
96
128
|
# round up in EA's output. The 1/64px step is inferred.
|
|
97
129
|
def gdi_pixel_advance(advance, height)
|
|
@@ -126,13 +158,17 @@ module Ea
|
|
|
126
158
|
if GDI_HEIGHT_FAMILIES.include?(resolved)
|
|
127
159
|
height = logical_height || gdi_logical_height(size_pt)
|
|
128
160
|
table = table_for(family, weight, style)
|
|
161
|
+
fallback = cjk_fallback_widths(resolved, height, weight, style)
|
|
162
|
+
measured_latin = measured_carlito_widths(resolved, height, weight, style)
|
|
129
163
|
latin = 0
|
|
130
164
|
cjk_count = 0
|
|
131
165
|
text.each_char do |ch|
|
|
132
166
|
if cjk?(ch.ord)
|
|
133
|
-
|
|
167
|
+
measured = fallback[ch]
|
|
168
|
+
measured ? latin += measured : cjk_count += 1
|
|
134
169
|
else
|
|
135
|
-
latin +=
|
|
170
|
+
latin += measured_latin[ch] ||
|
|
171
|
+
gdi_pixel_advance(table[cp_key(ch)] || DEFAULT_ADVANCE, height)
|
|
136
172
|
end
|
|
137
173
|
end
|
|
138
174
|
return latin + cjk_count * CJK_ADVANCE * size_pt.to_f
|
|
@@ -146,30 +182,52 @@ module Ea
|
|
|
146
182
|
|
|
147
183
|
private_class_method :advance_text_length
|
|
148
184
|
|
|
185
|
+
# Measured fallback advances for `family` at this height and style,
|
|
186
|
+
# keyed by character; empty when the configuration was not measured.
|
|
187
|
+
def cjk_fallback_widths(family, height, weight, style)
|
|
188
|
+
return {} unless CJK_FALLBACK_FAMILIES.include?(family)
|
|
189
|
+
|
|
190
|
+
CJK_FALLBACK_WIDTHS.fetch("#{height}:#{bold?(weight) ? 700 : 400}:#{italic?(style) ? "italic" : "normal"}", {})
|
|
191
|
+
end
|
|
192
|
+
private_class_method :cjk_fallback_widths
|
|
193
|
+
|
|
194
|
+
def measured_carlito_widths(family, height, weight, style)
|
|
195
|
+
return {} unless family == "Carlito"
|
|
196
|
+
|
|
197
|
+
CARLITO_GDI_WIDTHS.fetch("#{height}:#{bold?(weight) ? 700 : 400}:#{italic?(style) ? "italic" : "normal"}", {})
|
|
198
|
+
end
|
|
199
|
+
private_class_method :measured_carlito_widths
|
|
200
|
+
|
|
149
201
|
def cambria_text_length(text, size_pt, weight, style)
|
|
150
202
|
return nil unless size_pt.to_f.to_r == 7
|
|
151
203
|
return nil unless ["", "0", "400", "normal", "700", "bold"].include?(weight.to_s)
|
|
152
204
|
return nil unless ["", "normal", "italic"].include?(style.to_s)
|
|
153
205
|
|
|
206
|
+
fallback = cambria_cjk_widths(weight, style)
|
|
154
207
|
key = STYLE_KEYS.fetch([bold?(weight), italic?(style)])
|
|
155
|
-
return cambria_styled_length(text, key) unless key == :regular
|
|
208
|
+
return cambria_styled_length(text, key, fallback) unless key == :regular
|
|
156
209
|
|
|
157
|
-
return cambria_ascii_length(text) unless text.start_with?("«") && text.end_with?("»")
|
|
210
|
+
return cambria_ascii_length(text, fallback) unless text.start_with?("«") && text.end_with?("»")
|
|
158
211
|
|
|
159
|
-
inner_width = cambria_ascii_length(text[1...-1])
|
|
212
|
+
inner_width = cambria_ascii_length(text[1...-1], fallback)
|
|
160
213
|
inner_width + CAMBRIA_7_GUILLEMET_PAIR_WIDTH if inner_width
|
|
161
214
|
end
|
|
162
215
|
private_class_method :cambria_text_length
|
|
163
216
|
|
|
164
|
-
def
|
|
217
|
+
def cambria_cjk_widths(weight, style)
|
|
218
|
+
cjk_fallback_widths("Cambria", gdi_logical_height(7), weight, style)
|
|
219
|
+
end
|
|
220
|
+
private_class_method :cambria_cjk_widths
|
|
221
|
+
|
|
222
|
+
def cambria_styled_length(text, key, fallback)
|
|
165
223
|
table = CAMBRIA_7_STYLED_WIDTHS.fetch(key.to_s)
|
|
166
|
-
widths = text.each_char.map { |char| table[char] }
|
|
224
|
+
widths = text.each_char.map { |char| table[char] || fallback[char] }
|
|
167
225
|
widths.sum unless widths.empty? || widths.include?(nil)
|
|
168
226
|
end
|
|
169
227
|
private_class_method :cambria_styled_length
|
|
170
228
|
|
|
171
|
-
def cambria_ascii_length(text)
|
|
172
|
-
widths = text.each_char.map { |char| CAMBRIA_7_REGULAR_WIDTHS[char] }
|
|
229
|
+
def cambria_ascii_length(text, fallback)
|
|
230
|
+
widths = text.each_char.map { |char| CAMBRIA_7_REGULAR_WIDTHS[char] || fallback[char] }
|
|
173
231
|
widths.sum unless widths.empty? || widths.include?(nil)
|
|
174
232
|
end
|
|
175
233
|
private_class_method :cambria_ascii_length
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Arial": {
|
|
3
|
+
"units_per_em": 2048,
|
|
4
|
+
"win_ascent": 1854,
|
|
5
|
+
"win_descent": 434,
|
|
6
|
+
"version": "Version 5.01.2x",
|
|
7
|
+
"vdmx": {
|
|
8
|
+
"8": [
|
|
9
|
+
8,
|
|
10
|
+
2
|
|
11
|
+
],
|
|
12
|
+
"9": [
|
|
13
|
+
9,
|
|
14
|
+
3
|
|
15
|
+
],
|
|
16
|
+
"10": [
|
|
17
|
+
10,
|
|
18
|
+
3
|
|
19
|
+
],
|
|
20
|
+
"11": [
|
|
21
|
+
11,
|
|
22
|
+
3
|
|
23
|
+
],
|
|
24
|
+
"12": [
|
|
25
|
+
12,
|
|
26
|
+
3
|
|
27
|
+
],
|
|
28
|
+
"13": [
|
|
29
|
+
13,
|
|
30
|
+
3
|
|
31
|
+
],
|
|
32
|
+
"14": [
|
|
33
|
+
13,
|
|
34
|
+
3
|
|
35
|
+
],
|
|
36
|
+
"15": [
|
|
37
|
+
14,
|
|
38
|
+
3
|
|
39
|
+
],
|
|
40
|
+
"16": [
|
|
41
|
+
15,
|
|
42
|
+
3
|
|
43
|
+
],
|
|
44
|
+
"17": [
|
|
45
|
+
15,
|
|
46
|
+
4
|
|
47
|
+
],
|
|
48
|
+
"18": [
|
|
49
|
+
17,
|
|
50
|
+
4
|
|
51
|
+
],
|
|
52
|
+
"19": [
|
|
53
|
+
18,
|
|
54
|
+
4
|
|
55
|
+
],
|
|
56
|
+
"20": [
|
|
57
|
+
19,
|
|
58
|
+
4
|
|
59
|
+
],
|
|
60
|
+
"21": [
|
|
61
|
+
19,
|
|
62
|
+
5
|
|
63
|
+
],
|
|
64
|
+
"22": [
|
|
65
|
+
20,
|
|
66
|
+
5
|
|
67
|
+
],
|
|
68
|
+
"23": [
|
|
69
|
+
21,
|
|
70
|
+
5
|
|
71
|
+
],
|
|
72
|
+
"24": [
|
|
73
|
+
21,
|
|
74
|
+
6
|
|
75
|
+
],
|
|
76
|
+
"25": [
|
|
77
|
+
23,
|
|
78
|
+
5
|
|
79
|
+
],
|
|
80
|
+
"26": [
|
|
81
|
+
25,
|
|
82
|
+
6
|
|
83
|
+
],
|
|
84
|
+
"27": [
|
|
85
|
+
26,
|
|
86
|
+
6
|
|
87
|
+
],
|
|
88
|
+
"28": [
|
|
89
|
+
26,
|
|
90
|
+
6
|
|
91
|
+
],
|
|
92
|
+
"29": [
|
|
93
|
+
27,
|
|
94
|
+
6
|
|
95
|
+
],
|
|
96
|
+
"30": [
|
|
97
|
+
28,
|
|
98
|
+
7
|
|
99
|
+
],
|
|
100
|
+
"31": [
|
|
101
|
+
28,
|
|
102
|
+
7
|
|
103
|
+
],
|
|
104
|
+
"32": [
|
|
105
|
+
29,
|
|
106
|
+
7
|
|
107
|
+
],
|
|
108
|
+
"33": [
|
|
109
|
+
31,
|
|
110
|
+
7
|
|
111
|
+
],
|
|
112
|
+
"34": [
|
|
113
|
+
32,
|
|
114
|
+
7
|
|
115
|
+
],
|
|
116
|
+
"35": [
|
|
117
|
+
32,
|
|
118
|
+
8
|
|
119
|
+
],
|
|
120
|
+
"36": [
|
|
121
|
+
33,
|
|
122
|
+
8
|
|
123
|
+
],
|
|
124
|
+
"37": [
|
|
125
|
+
34,
|
|
126
|
+
8
|
|
127
|
+
],
|
|
128
|
+
"38": [
|
|
129
|
+
34,
|
|
130
|
+
9
|
|
131
|
+
],
|
|
132
|
+
"39": [
|
|
133
|
+
35,
|
|
134
|
+
9
|
|
135
|
+
],
|
|
136
|
+
"40": [
|
|
137
|
+
36,
|
|
138
|
+
9
|
|
139
|
+
]
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
"Carlito": {
|
|
143
|
+
"units_per_em": 2048,
|
|
144
|
+
"win_ascent": 1950,
|
|
145
|
+
"win_descent": 550,
|
|
146
|
+
"version": "Version 1.104"
|
|
147
|
+
},
|
|
148
|
+
"Cambria": {
|
|
149
|
+
"units_per_em": 2048,
|
|
150
|
+
"win_ascent": 2075,
|
|
151
|
+
"win_descent": 455,
|
|
152
|
+
"version": "Version 5.24"
|
|
153
|
+
}
|
|
154
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Ea
|
|
4
|
+
module Sources
|
|
5
|
+
module Qea
|
|
6
|
+
class DiagramBuilder
|
|
7
|
+
# Association-class tethers use coincident proxies as the saved
|
|
8
|
+
# association anchor; PDATA1 identifies the attached classifier.
|
|
9
|
+
module AssociationClass
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def mark_association_class(model, connector, diagram)
|
|
13
|
+
return model unless association_class_connector?(connector) && association_proxies?(connector)
|
|
14
|
+
|
|
15
|
+
attached = placed_association_class(connector, diagram)
|
|
16
|
+
return model unless attached && coincident_anchors?(model)
|
|
17
|
+
|
|
18
|
+
model.style[:association_class_ref] = IdNormalizer.from_guid(attached.ea_guid)
|
|
19
|
+
model
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def association_class_connector?(connector)
|
|
23
|
+
connector&.connector_type == "Association" && connector.subtype == "Class" &&
|
|
24
|
+
connector.pdata1.to_s.match?(/\A[1-9]\d*\z/)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def placed_association_class(connector, diagram)
|
|
28
|
+
attached = database.find_object(connector.pdata1.to_i)
|
|
29
|
+
return unless attached&.object_type == "Class"
|
|
30
|
+
return unless diagram_object_placement(diagram.diagram_id, attached.ea_object_id)
|
|
31
|
+
|
|
32
|
+
attached
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def association_proxies?(connector)
|
|
36
|
+
proxies = [connector.start_object_id, connector.end_object_id].map { |id| database.find_object(id) }
|
|
37
|
+
return false unless proxies.all? { |object| object&.object_type == "ProxyConnector" }
|
|
38
|
+
|
|
39
|
+
guid = proxies.first.classifier_guid
|
|
40
|
+
!guid.to_s.empty? && guid == proxies.last.classifier_guid
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def coincident_anchors?(model)
|
|
44
|
+
first = model.source_anchor
|
|
45
|
+
last = model.target_anchor
|
|
46
|
+
first && last && first.x == last.x && first.y == last.y
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -81,13 +81,15 @@ module Ea
|
|
|
81
81
|
# A Mode 2 Generalization whose stored Path is a horizontal jog
|
|
82
82
|
# between vertically separated boxes that overlap in x is EA's
|
|
83
83
|
# auto-route: one vertical ray at the overlap midpoint plus SX.
|
|
84
|
-
#
|
|
84
|
+
# Empty Paths qualify only when both saved origins face the gap.
|
|
85
|
+
# The ray docks on both 1px outlines.
|
|
85
86
|
def mode2_overlap_ray(model, link_row, diagram_row, geom, context)
|
|
86
87
|
return model if context || !mode2_overlap_candidate?(model, link_row, geom)
|
|
87
88
|
|
|
88
89
|
source, target = stored_ray_boxes(link_row, diagram_row)
|
|
89
90
|
column = overlap_ray_coordinate(source.x, source.width, target.x, target.width, geom[:sx])
|
|
90
91
|
return model unless column && vertical_separation?(source, target)
|
|
92
|
+
return model unless mode2_overlap_path?(link_row, source, target, geom, column)
|
|
91
93
|
|
|
92
94
|
set_overlap_ray(model, column, source, target)
|
|
93
95
|
end
|
|
@@ -104,8 +106,35 @@ module Ea
|
|
|
104
106
|
|
|
105
107
|
def mode2_overlap_candidate?(model, link_row, geom)
|
|
106
108
|
model.connector_type == "Generalization" && model.has_geometry_offsets &&
|
|
107
|
-
mode2_overlap_style?(model.style.to_h, geom) &&
|
|
108
|
-
|
|
109
|
+
mode2_overlap_style?(model.style.to_h, geom) &&
|
|
110
|
+
((model.waypoints.size == 2 && link_row.path.to_s.empty?) ||
|
|
111
|
+
(model.waypoints.size == 4 && horizontal_jog?(intermediate_waypoints(link_row))))
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def mode2_overlap_path?(link_row, source, target, geom, column)
|
|
115
|
+
!link_row.path.to_s.empty? || mode2_facing_origins?(source, target, geom, column)
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# Saved origins on the facing border or one pixel inside it identify
|
|
119
|
+
# the empty auto-route. Interior and external origins retain their ray.
|
|
120
|
+
def mode2_facing_origins?(source, target, geom, column)
|
|
121
|
+
return false unless geom.values_at(:sx, :sy, :ex, :ey).all?
|
|
122
|
+
|
|
123
|
+
origins = [stored_ray_origin(source, geom[:sx], geom[:sy]),
|
|
124
|
+
stored_ray_origin(target, geom[:ex], geom[:ey])]
|
|
125
|
+
return false unless mode2_origins_share_column?(origins, source, column)
|
|
126
|
+
|
|
127
|
+
origins.zip([source, target], overlap_ray_ends(column, source, target)).all? do |origin, box, dock|
|
|
128
|
+
mode2_origin_on_face?(origin, box, dock[1])
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def mode2_origin_on_face?(origin, box, outline_y)
|
|
133
|
+
inside_box?(origin, box) && (origin.y - outline_y).abs.between?(1, 2)
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def mode2_origins_share_column?(origins, source, column)
|
|
137
|
+
origins.first.x == column && origins.last.x.between?(source.x, source.x + source.width)
|
|
109
138
|
end
|
|
110
139
|
|
|
111
140
|
def mode2_overlap_style?(style, geom)
|
|
@@ -152,6 +181,7 @@ module Ea
|
|
|
152
181
|
# Computed-jog origins are already normalized to their derived ports.
|
|
153
182
|
def correct_stored_ray_origins(model, link_row, diagram_row, geom, context)
|
|
154
183
|
return model if context
|
|
184
|
+
return notelink_stored_ray(model, link_row, diagram_row, geom) if model.connector_type == "NoteLink"
|
|
155
185
|
return model unless stored_ray_candidate?(model, link_row, geom)
|
|
156
186
|
|
|
157
187
|
source, target = stored_ray_boxes(link_row, diagram_row)
|
|
@@ -168,6 +198,30 @@ module Ea
|
|
|
168
198
|
model
|
|
169
199
|
end
|
|
170
200
|
|
|
201
|
+
# A straight top-docked NoteLink uses mathematical saved Y offsets,
|
|
202
|
+
# like the other custom rays, while authored bends keep their ports.
|
|
203
|
+
def notelink_stored_ray(model, link_row, diagram_row, geom)
|
|
204
|
+
return model unless notelink_ray_candidate?(model, link_row, geom)
|
|
205
|
+
|
|
206
|
+
source, target = stored_ray_boxes(link_row, diagram_row)
|
|
207
|
+
return model unless target.y + target.height < source.y
|
|
208
|
+
return model unless notelink_origins_inside?(source, target, geom)
|
|
209
|
+
|
|
210
|
+
set_stored_ray_origins(model, source, target, geom)
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
def notelink_ray_candidate?(model, link_row, geom)
|
|
214
|
+
model.waypoints.size == 2 && link_row.path.to_s.empty? && model.style[:lwidth] == "2" &&
|
|
215
|
+
association_ray_style?(model.style.to_h) &&
|
|
216
|
+
geom[:edge] == 1 && geom.values_at(:sx, :sy, :ex, :ey).all?
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
def notelink_origins_inside?(source, target, geom)
|
|
220
|
+
origins = [stored_ray_origin(source, geom[:sx], geom[:sy]),
|
|
221
|
+
stored_ray_origin(target, geom[:ex], geom[:ey])]
|
|
222
|
+
origins.zip([source, target]).all? { |origin, box| inside_box?(origin, box) }
|
|
223
|
+
end
|
|
224
|
+
|
|
171
225
|
# Certify only a straight, width-2 custom-line ray whose corrected
|
|
172
226
|
# stored origins lie inside their own outlines. Its clipped row is
|
|
173
227
|
# authored geometry, even when it coincides with a header divider.
|
|
@@ -14,12 +14,14 @@ module Ea
|
|
|
14
14
|
autoload :AutoRouting, "ea/sources/qea/diagram_builder/auto_routing"
|
|
15
15
|
autoload :StoredSquarePorts, "ea/sources/qea/diagram_builder/stored_square_ports"
|
|
16
16
|
autoload :FontSettings, "ea/sources/qea/diagram_builder/font_settings"
|
|
17
|
+
autoload :AssociationClass, "ea/sources/qea/diagram_builder/association_class"
|
|
17
18
|
include Routing
|
|
18
19
|
include AutoRouting
|
|
19
20
|
include StoredSquarePorts
|
|
20
21
|
include FontSettings
|
|
22
|
+
include AssociationClass
|
|
21
23
|
private_constant :Routing
|
|
22
|
-
private_constant :AutoRouting, :StoredSquarePorts, :FontSettings
|
|
24
|
+
private_constant :AutoRouting, :StoredSquarePorts, :FontSettings, :AssociationClass
|
|
23
25
|
|
|
24
26
|
attr_reader :database
|
|
25
27
|
|
|
@@ -487,7 +489,8 @@ module Ea
|
|
|
487
489
|
model = auto_port_elbow(model, link_row, diagram_row, geom, context)
|
|
488
490
|
model = mark_default_square_ray(model, link_row, geom, context)
|
|
489
491
|
model = restore_stored_square_ports(model, link_row, diagram_row, geom, context)
|
|
490
|
-
reversed_stored_corner(model, link_row, diagram_row, geom, context)
|
|
492
|
+
model = reversed_stored_corner(model, link_row, diagram_row, geom, context)
|
|
493
|
+
mark_association_class(model, connector, diagram_row)
|
|
491
494
|
end
|
|
492
495
|
|
|
493
496
|
# Ray origin for one connector end: the element's center
|