pub(crate) unsafe fn otl_gsub_apply_chain(gsub_list: &otl_gsub, gid: *mut u16) -> i32 {
    let mut retval: i32 = -1;
    if gid.is_null() {
        return retval;
    }
    let mut entry = gsub_list.first;
    while !entry.is_null() {
        let idx = (*entry).index;
        if !(idx < 0 || idx >= gsub_list.num_gsubs) {
            let gsub = &*gsub_list.gsubs.as_ptr().offset(idx as isize);
            let mut i = 0;
            retval = -1;
            while retval < 0 && i < gsub.num_subtables {
                let subtab = &*gsub.subtables.offset(i as isize);
                match subtab.LookupType as i32 {
                    1 => retval = otl_gsub_apply_single(subtab, gid),
                    _ => {}
                }
                i += 1
            }
        }
        entry = (*entry).next
    }
    retval
}
/* Handle a list of OTL features */
Handle a list of OTL features
Handle a list of OTL features
pub(crate) unsafe fn otl_gsub_apply_chain(gsub_list: &otl_gsub, gid: *mut u16) -> i32 {
    let mut retval: i32 = -1;
    if gid.is_null() {
        return retval;
    }
    let mut entry = gsub_list.first;
    while !entry.is_null() {
        let idx = (*entry).index;
        if !(idx < 0 || idx >= gsub_list.num_gsubs) {
            let gsub = &*gsub_list.gsubs.as_ptr().offset(idx as isize);
            let mut i = 0;
            retval = -1;
            while retval < 0 && i < gsub.num_subtables {
                let subtab = &*gsub.subtables.offset(i as isize);
                match subtab.LookupType as i32 {
                    1 => retval = otl_gsub_apply_single(subtab, gid),
                    _ => {}
                }
                i += 1
            }
        }
        entry = (*entry).next
    }
    retval
}
pub ( crate ) unsafe fn otl_gsub_apply_chain ( gsub_list : & otl_gsub , gid : * mut u16 ) -> i32 { let mut retval : i32 = - 1 ; if gid . is_null ( ) { return retval ; } let mut entry = gsub_list . first ; while ! entry . is_null ( ) { let idx = ( * entry ) . index ; if ! ( idx < 0 || idx >= gsub_list . num_gsubs ) { let gsub = & * gsub_list . gsubs . as_ptr ( ) . offset ( idx as isize ) ; let mut i = 0 ; retval = - 1 ; while retval < 0 && i < gsub . num_subtables { let subtab = & * gsub . subtables . offset ( i as isize ) ; match subtab . LookupType as i32 { 1 => retval = otl_gsub_apply_single ( subtab , gid ) , _ => { } } i += 1 } } entry = ( * entry ) . next } retval }
Handle a list of OTL features
Handle a list of OTL features
gsub_list
&otl_gsub
gid
*mut u16