根据海思方案减少4gai ui界面出现叠字概率还需要优化 2720/2 2720/head
authorluozheng <1732036298@qq.com>
Tue, 11 Nov 2025 10:02:26 +0000 (18:02 +0800)
committerluozheng <1732036298@qq.com>
Tue, 11 Nov 2025 10:02:26 +0000 (18:02 +0800)
code/sdk/open_source/openharmony/third_party/freetype/src/base/ftsystem.c

index f92b3a0..a250cde 100644 (file)
@@ -33,6 +33,7 @@
 #include FT_ERRORS_H
 #include FT_TYPES_H
 
+#include "graphic_hardware_config.h"
 
   /**************************************************************************
    *
 
     file = STREAM_FILE( stream );
 
+    #if defined(BOARD_N9) || defined(BOARD_FD230)  //减少4gai叠字概率,还未完全解决
+    long oriFilePos = ftell(file);
+    if ( stream->pos != offset ) { // seek可能就走这里,偏移,读取count为0
+        ft_fseek( file, (long)offset, SEEK_SET ); // LWJ: 位置错了,可以强制偏移,以入参为准
+        // printf("[LTT] [%s: %d] seek: offset %d, stream->pos: %d\n",
+        //   __FUNCTION__, __LINE__, offset, stream->pos); // todo: 可以放开,每次强制偏移保证位置正确,再去读数据
+    } else { // 检测是否有可能记录的位置和实际File位置不一致的情况
+        if (oriFilePos != offset) {
+          // printf("[LTT] [%s: %d] oriFilePos : %d, not equal to, offset: %d!!!!!!!!!\n",
+          //   __FUNCTION__, __LINE__, oriFilePos, offset);
+          ft_fseek( file, (long)offset, SEEK_SET ); // LWJ: 位置错了,可以强制偏移,以入参为准
+        }
+    }
+    if (count != 0) {
+        //  printf("[LTT] [%s: %d] ft_ansi_stream_io READ: buffer %p, file->pos: %d, stream->pos: %d, offset: %d, count: %u\n",
+        //   __FUNCTION__, __LINE__, buffer, ftell(file), stream->pos, offset, count);
+    }
+    #else
     if ( stream->pos != offset )
       ft_fseek( file, (long)offset, SEEK_SET );
 
+      #endif
     return (unsigned long)ft_fread( buffer, 1, count, file );
   }