<?xml version="1.0"?>
<!--
    ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements. See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License. You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
    ====================================================================
-->
<record fromfile="true" name="HRESI" package="org.apache.poi.hwpf.model.types">
    <suffix>AbstractType</suffix>
    <description>Hyphenation (HRESI). &lt;p&gt;Class and fields descriptions are
        quoted from
        Microsoft Office Word 97-2007 Binary File Format (.doc) Specification
    </description>
    <author>Sergey Vladimirov; according to Microsoft Office Word 97-2007 Binary File Format (.doc)
        Specification
    </author>
    <fields>
        <field type="byte" size="1" name="hres" description="Hyphenation rule">
            <const type="byte" value="0" name="NO"/>
            <const type="byte" value="1" name="NORMAL"/>
            <const type="byte" value="2" name="ADD_LETTER_BEFORE"/>
            <const type="byte" value="3" name="CHANGE_LETTER_BEFORE"/>
            <const type="byte" value="4" name="DELETE_LETTER_BEFORE"/>
            <const type="byte" value="5" name="CHANGE_LETTER_AFTER"/>
            <const type="byte" value="6" name="DELETE_BEFORE_CHANGE_BEFORE"/>
        </field>
        <field type="byte" size="1" name="chHres"
            description="The character that will be used to add or change a letter when hres is 2, 3, 5 or 6"/>
    </fields>
</record>
