The PNG images generated via plantuml from standoc on Windows, and one Ruby version of Ubuntu, are failing the pngcheck validation that I've just introduced. This issue is holding up Metanorma release.
The code involved generates Plantuml from YAML files. I would start by investigating whether Plantuml output is valid under pngcheck in Windows at all.
[plantuml,title=Common models to be used in this standard]
....
@startuml
'******* IMPORTS ******************************************************
!include /Users/nickn/.../metanorma-standoc/spec/examples/datamodel/models/views/../style.uml.inc
'******* CLASS DEFINITIONS ********************************************
class Localization {
+locale: iso19115PT_Locale
+script: iso15924Code
+textDirection: TextDirectionCode
}
class Validity {
+validityBegins: iso19115CI_Date
+validityEnds: iso19115CI_Date
+revision: iso19115CI_Date
}
class Signature {
+algorithm: iso14888Oid
+publicKey: Uri
+signature: CharacterString
}
enum TextDirectionCode <<enumeration>> {
leftToRightTopToBottom
rightToLeftTopToBottom
leftToRightBottomToTop
rightToLeftBottomToTop
}
'******* CLASS RELATIONS **********************************************
Localization -[hidden]-> Validity
Signature -[hidden]-> Localization
'******* FIDELITY *****************************************************
@enduml
...
[plantuml,title=Address profile model overview in UML]
....
@startuml
'******* CLASS GROUPS *************************************************
together {
class AddressProfile
}
together {
class InterchangeAddressClassProfile
class AddressClassProfile
class AddressComponentProfile
}
together {
class AddressComponentSpecification
}
together {
class ProfileCompliantAddress
class ProfileCompliantAddressComponent
}
together {
class Address
class AddressComponent
}
'******* IMPORTS ******************************************************
!include /Users/nickn/Documents/Arbeit/upwork/ribose/metanorma-standoc/spec/examples/datamodel/models/views/../style.uml.inc
'******* CLASS DEFINITIONS ********************************************
class Address {
}
class AddressComponent {
}
class ProfileCompliantAddress {
}
class ProfileCompliantAddressComponent {
}
class AddressProfile {
+country: iso3166Code[0..*]
}
class AddressClassProfile {
+id: CharacterString
+type: CharacterString
+description: CharacterString
+localization: Localization
+signature: Signature[0..1]
+areaApplicability: iso19115MD_SpatialRepresentation[0..*]
+timeToLive: Integer
+validity: Validity
}
class InterchangeAddressClassProfile {
}
class AddressComponentProfile {
+key: CharacterString
+description: CharacterString
+example: CharacterString[0..1]
}
class AddressComponentSpecification {
+maxCardinality: Integer
+minCardinality: Integer
}
class AttributeProfile {
+name: CharacterString
+minCardinality: Integer[0..1]
+maxCardinality: Integer[0..1]
+valueType: CharacterString[0..1]
}
'******* CLASS RELATIONS **********************************************
Address o--> AddressComponent : comprises >
ProfileCompliantAddress --|> Address
ProfileCompliantAddress o--> ProfileCompliantAddressComponent : comprises >
(ProfileCompliantAddress, ProfileCompliantAddressComponent) . AddressComponentSpecification
ProfileCompliantAddressComponent --|> AddressComponent
AddressProfile \"+componentProfile 0..*\" o-- AddressComponentProfile : defines >
AddressProfile \"+addressProfile 0..*\" o-- AddressClassProfile : defines >
AddressClassProfile \"+addressClassProfile\" o--> \"+attributeProfile 0..*\" AttributeProfile
AddressClassProfile \"+profile \" --> ProfileCompliantAddress : < compliesWith
InterchangeAddressClassProfile --|> AddressClassProfile
InterchangeAddressClassProfile \"+attributeProfile\" o--> \"+addressClassProfile\" AttributeProfileSignature
InterchangeAddressClassProfile \"+attributeProfile\" o--> \"+addressClassProfile\" AttributeProfileAddressFeature
InterchangeAddressClassProfile \"+attributeProfile\" o--> \"+addressClassProfile\" AttributeProfileValidity
InterchangeAddressClassProfile o-- \"+formTemplate 0..*\" FormTemplate : defines >
InterchangeAddressClassProfile o-- \"+displayTemplate 0..*\" DisplayTemplate : defines >
AddressComponentProfile --o \"+componentProfile 0..*\" AddressClassProfile : < uses
(AddressComponentProfile, AddressClassProfile) . AddressComponentSpecification
AddressComponentProfile \"+addressClassProfile\" o--> \"+attributeProfile 0..*\" AttributeProfile
AddressComponentProfile --> \"+profile \" ProfileCompliantAddressComponent : < compliesWith
InterchangeAddressClassProfile -[hidden]right- AddressClassProfile
AddressClassProfile -[hidden]right- AddressComponentProfile
ProfileCompliantAddress -[hidden]right- ProfileCompliantAddressComponent
Address -[hidden]right- AddressComponent
AddressProfile -[hidden]down- AddressClassProfile
AddressClassProfile -[hidden]down- ProfileCompliantAddress
AddressComponentProfile -[hidden]down- AddressComponentSpecification
AddressComponentSpecification -[hidden]down- ProfileCompliantAddressComponent
ProfileCompliantAddress -[hidden]down- Address
ProfileCompliantAddressComponent -[hidden]down- AddressComponent
'******* FIDELITY *****************************************************
hide AttributeProfileSignature
hide AttributeProfileAddressFeature
hide AttributeProfileValidity
hide FormTemplate
hide DisplayTemplate
hide members
@enduml
....[plantuml,title=Address profile model overview in UML]
....
@startuml
'******* CLASS GROUPS *************************************************
together {
class AddressProfile
}
together {
class InterchangeAddressClassProfile
class AddressClassProfile
class AddressComponentProfile
}
together {
class AddressComponentSpecification
}
together {
class ProfileCompliantAddress
class ProfileCompliantAddressComponent
}
together {
class Address
class AddressComponent
}
'******* IMPORTS ******************************************************
!include /Users/nickn/Documents/Arbeit/upwork/ribose/metanorma-standoc/spec/examples/datamodel/models/views/../style.uml.inc
'******* CLASS DEFINITIONS ********************************************
class Address {
}
class AddressComponent {
}
class ProfileCompliantAddress {
}
class ProfileCompliantAddressComponent {
}
class AddressProfile {
+country: iso3166Code[0..*]
}
class AddressClassProfile {
+id: CharacterString
+type: CharacterString
+description: CharacterString
+localization: Localization
+signature: Signature[0..1]
+areaApplicability: iso19115MD_SpatialRepresentation[0..*]
+timeToLive: Integer
+validity: Validity
}
class InterchangeAddressClassProfile {
}
class AddressComponentProfile {
+key: CharacterString
+description: CharacterString
+example: CharacterString[0..1]
}
class AddressComponentSpecification {
+maxCardinality: Integer
+minCardinality: Integer
}
class AttributeProfile {
+name: CharacterString
+minCardinality: Integer[0..1]
+maxCardinality: Integer[0..1]
+valueType: CharacterString[0..1]
}
'******* CLASS RELATIONS **********************************************
Address o--> AddressComponent : comprises >
ProfileCompliantAddress --|> Address
ProfileCompliantAddress o--> ProfileCompliantAddressComponent : comprises >
(ProfileCompliantAddress, ProfileCompliantAddressComponent) . AddressComponentSpecification
ProfileCompliantAddressComponent --|> AddressComponent
AddressProfile \"+componentProfile 0..*\" o-- AddressComponentProfile : defines >
AddressProfile \"+addressProfile 0..*\" o-- AddressClassProfile : defines >
AddressClassProfile \"+addressClassProfile\" o--> \"+attributeProfile 0..*\" AttributeProfile
AddressClassProfile \"+profile \" --> ProfileCompliantAddress : < compliesWith
InterchangeAddressClassProfile --|> AddressClassProfile
InterchangeAddressClassProfile \"+attributeProfile\" o--> \"+addressClassProfile\" AttributeProfileSignature
InterchangeAddressClassProfile \"+attributeProfile\" o--> \"+addressClassProfile\" AttributeProfileAddressFeature
InterchangeAddressClassProfile \"+attributeProfile\" o--> \"+addressClassProfile\" AttributeProfileValidity
InterchangeAddressClassProfile o-- \"+formTemplate 0..*\" FormTemplate : defines >
InterchangeAddressClassProfile o-- \"+displayTemplate 0..*\" DisplayTemplate : defines >
AddressComponentProfile --o \"+componentProfile 0..*\" AddressClassProfile : < uses
(AddressComponentProfile, AddressClassProfile) . AddressComponentSpecification
AddressComponentProfile \"+addressClassProfile\" o--> \"+attributeProfile 0..*\" AttributeProfile
AddressComponentProfile --> \"+profile \" ProfileCompliantAddressComponent : < compliesWith
InterchangeAddressClassProfile -[hidden]right- AddressClassProfile
AddressClassProfile -[hidden]right- AddressComponentProfile
ProfileCompliantAddress -[hidden]right- ProfileCompliantAddressComponent
Address -[hidden]right- AddressComponent
AddressProfile -[hidden]down- AddressClassProfile
AddressClassProfile -[hidden]down- ProfileCompliantAddress
AddressComponentProfile -[hidden]down- AddressComponentSpecification
AddressComponentSpecification -[hidden]down- ProfileCompliantAddressComponent
ProfileCompliantAddress -[hidden]down- Address
ProfileCompliantAddressComponent -[hidden]down- AddressComponent
'******* FIDELITY *****************************************************
hide AttributeProfileSignature
hide AttributeProfileAddressFeature
hide AttributeProfileValidity
hide FormTemplate
hide DisplayTemplate
hide members
@enduml
....