4

For Bold, Italic and BoldItalic I switched to SutonnyMJ from Kalpurush as it doesn't have those features. Even though I've put all those .ttf files in my working directory, Bold, Italic and BoldItalic features aren't working.

Here's what I've in my tex file:

\documentclass{article}
\usepackage{harfload, fontspec}
\setmainfont{SutonnyOMJ}[
    Extension = .ttf,
    BoldFont = SutonnyMJ-Bold,
    ItalicFont = SutonnyMJ-Italic,
    BoldItalicFont = SutonnyMJ-BoldItalic,
    RawFeature = {mode=harf}
]
\parindent 0pt
\begin{document}

    কি অবস্থা? \textbf{কি অবস্থা?} \textit{কি অবস্থা?} \\
    \textbf{\textit{কি অবস্থা?}} \emph{কি অবস্থা?}

\end{document}

and here's the output:

enter image description here

In MS Word it's no problem, here's the output of MS Word:

enter image description here

Here's the log file:

This is HarfTeX, Version 0.1.2 (TeX Live 2019/W32TeX)  (format=harflatex 2019.6.16)  18 JUN 2019 07:06
 restricted system commands enabled.
 file:line:error style messages enabled.
**c:/Users/Emon/Desktop/tikz/test
(c:/Users/Emon/Desktop/tikz/test.tex
LaTeX2e <2018-12-01>
Lua module: luaotfload-main 2019-05-18 2.97 luaotfload entry point
Lua module: luaotfload-init 2019-05-18 2.97 luaotfload submodule / initialization
Lua module: lualibs 2019-05-18 2.65 ConTeXt Lua standard libraries.
Lua module: lualibs-extended 2019-05-18 2.65 ConTeXt Lua libraries -- extended collection.
Lua module: luaotfload-log 2019-05-18 2.97 luaotfload submodule / logging
Lua module: luaotfload-parsers 2019-05-18 2.97 luaotfload submodule / filelist
Lua module: luaotfload-configuration 2019-05-18 2.97 luaotfload submodule / config file reader
luaotfload | conf : Root cache directory is C:/Users/Emon/.texlive2019/texmf-var/luatex-cache/generic/names.
luaotfload | init : Loading fontloader “fontloader-2019-05-18.lua” from kpse-resolved path “c:/texlive/2019/texmf-dist/tex/luatex/luaotfload/fontloader-2019-05-18.lua”.
Lua-only attribute luaotfload@state = 1
Lua-only attribute luaotfload@noligature = 2
Lua-only attribute luaotfload@syllabe = 3
luaotfload | init : Context OpenType loader version “3.108”
Inserting `luaotfload.node_processor' at position 1 in `pre_linebreak_filter'.
Inserting `luaotfload.node_processor' at position 1 in `hpack_filter'.
Lua module: luaotfload-loaders 2019-05-18 2.97 luaotfload submodule / callback handling
Inserting `luaotfload.define_font' at position 1 in `define_font'.
Lua module: luaotfload-database 2019-05-18 2.97 luaotfload submodule / database
Lua module: luaotfload-colors 2019-05-18 2.97 luaotfload submodule / color
Lua-only attribute luaotfload_color_attribute = 4
Lua module: luaotfload-resolvers 2019-05-18 2.97 luaotfload submodule / resolvers
luaotfload | conf : Root cache directory is C:/Users/Emon/.texlive2019/texmf-var/luatex-cache/generic/names.
Lua module: luaotfload-features 2019-05-18 2.97 luaotfload submodule / features
Lua module: luaotfload-letterspace 2019-05-18 2.97 luaotfload submodule / color
Lua module: luaotfload-auxiliary 2019-05-18 2.97 luaotfload submodule / auxiliary functions
Inserting `luaotfload.aux.set_sscale_dimens' at position 1 in `luaotfload.patch_font'.
Inserting `luaotfload.aux.patch_cambria_domh' at position 2 in `luaotfload.patch_font'.
Inserting `luaotfload.aux.fixup_fontdata' at position 1 in `luaotfload.patch_font_unsafe'.
Inserting `luaotfload.aux.set_capheight' at position 3 in `luaotfload.patch_font'.
Inserting `luaotfload.rewrite_fontname' at position 4 in `luaotfload.patch_font'.
luaotfload | main : initialization completed in 0.169 seconds
(c:/texlive/2019/texmf-dist/tex/latex/base/minimal.cls
Document Class: minimal 2001/05/25 Standard LaTeX minimal class
) (c:/texlive/2019/texmf-dist/tex/generic/harftex/harfload.sty
Package: harfload 2019/04/26 v0.1.0 Unicode text layout system
Removing  `luaotfload.node_processor' from `hpack_filter'.
Inserting `Harf hpack_filter callback' at position 1 in `hpack_filter'.
Inserting `luaotfload.node_processor' at position 2 in `hpack_filter'.
Inserting `Harf wrapup_run callback' at position 1 in `wrapup_run'.
Removing  `luaotfload.node_processor' from `pre_linebreak_filter'.
Inserting `Harf pre_linebreak_filter callback' at position 1 in `pre_linebreak_filter'.
Inserting `luaotfload.node_processor' at position 2 in `pre_linebreak_filter'.
Inserting `Harf get_glyph_string callback' at position 1 in `get_glyph_string'.
Inserting `Harf get_char_tounicode callback' at position 1 in `get_char_tounicode'.
Inserting `Harf pre_output_filter callback' at position 1 in `pre_output_filter'.) (c:/texlive/2019/texmf-dist/tex/latex/fontspec/fontspec.sty (c:/texlive/2019/texmf-dist/tex/latex/l3packages/xparse/xparse.sty (c:/texlive/2019/texmf-dist/tex/latex/l3kernel/expl3.sty
Package: expl3 2019-05-28 L3 programming layer (loader) 
 (c:/texlive/2019/texmf-dist/tex/latex/l3kernel/expl3-code.tex
Package: expl3 2019-05-28 L3 programming layer (code)
\ucharcat@table=\catcodetable5
\c_max_int=\count80
\l_tmpa_int=\count81
\l_tmpb_int=\count82
\g_tmpa_int=\count83
\g_tmpb_int=\count84
\g__kernel_prg_map_int=\count85
\c__ior_term_ior=\count86
\c_log_iow=\count87
\l_iow_line_count_int=\count88
\l__iow_line_target_int=\count89
\l__iow_one_indent_int=\count90
\l__iow_indent_int=\count91
\c_zero_dim=\dimen102
\c_max_dim=\dimen103
\l_tmpa_dim=\dimen104
\l_tmpb_dim=\dimen105
\g_tmpa_dim=\dimen106
\g_tmpb_dim=\dimen107
\c_zero_skip=\skip41
\c_max_skip=\skip42
\l_tmpa_skip=\skip43
\l_tmpb_skip=\skip44
\g_tmpa_skip=\skip45
\g_tmpb_skip=\skip46
\c_zero_muskip=\muskip10
\c_max_muskip=\muskip11
\l_tmpa_muskip=\muskip12
\l_tmpb_muskip=\muskip13
\g_tmpa_muskip=\muskip14
\g_tmpb_muskip=\muskip15
\l_keys_choice_int=\count92
\l__intarray_loop_int=\count93
\c__intarray_sp_dim=\dimen108
\g__intarray_font_int=\count94
\c__fp_leading_shift_int=\count95
\c__fp_middle_shift_int=\count96
\c__fp_trailing_shift_int=\count97
\c__fp_big_leading_shift_int=\count98
\c__fp_big_middle_shift_int=\count99
\c__fp_big_trailing_shift_int=\count100
\c__fp_Bigg_leading_shift_int=\count101
\c__fp_Bigg_middle_shift_int=\count102
\c__fp_Bigg_trailing_shift_int=\count103
\g__fp_array_int=\count104
\l__fp_array_loop_int=\count105
\l__sort_length_int=\count106
\l__sort_min_int=\count107
\l__sort_top_int=\count108
\l__sort_max_int=\count109
\l__sort_true_max_int=\count110
\l__sort_block_int=\count111
\l__sort_begin_int=\count112
\l__sort_end_int=\count113
\l__sort_A_int=\count114
\l__sort_B_int=\count115
\l__sort_C_int=\count116
\l__tl_analysis_normal_int=\count117
\l__tl_analysis_index_int=\count118
\l__tl_analysis_nesting_int=\count119
\l__tl_analysis_type_int=\count120
\l__regex_internal_a_int=\count121
\l__regex_internal_b_int=\count122
\l__regex_internal_c_int=\count123
\l__regex_balance_int=\count124
\l__regex_group_level_int=\count125
\l__regex_mode_int=\count126
\c__regex_cs_in_class_mode_int=\count127
\c__regex_cs_mode_int=\count128
\l__regex_catcodes_int=\count129
\l__regex_default_catcodes_int=\count130
\c__regex_catcode_L_int=\count131
\c__regex_catcode_O_int=\count132
\c__regex_catcode_A_int=\count133
\c__regex_all_catcodes_int=\count134
\l__regex_show_lines_int=\count135
\l__regex_min_state_int=\count136
\l__regex_max_state_int=\count137
\l__regex_left_state_int=\count138
\l__regex_right_state_int=\count139
\l__regex_capturing_group_int=\count140
\l__regex_min_pos_int=\count141
\l__regex_max_pos_int=\count142
\l__regex_curr_pos_int=\count143
\l__regex_start_pos_int=\count144
\l__regex_success_pos_int=\count145
\l__regex_curr_char_int=\count146
\l__regex_curr_catcode_int=\count147
\l__regex_last_char_int=\count148
\l__regex_case_changed_char_int=\count149
\l__regex_curr_state_int=\count150
\l__regex_step_int=\count151
\l__regex_min_active_int=\count152
\l__regex_max_active_int=\count153
\l__regex_replacement_csnames_int=\count154
\l__regex_match_count_int=\count155
\l__regex_min_submatch_int=\count156
\l__regex_submatch_int=\count157
\l__regex_zeroth_submatch_int=\count158
\g__regex_trace_regex_int=\count159
\c_empty_box=\box27
\l_tmpa_box=\box28
\l_tmpb_box=\box29
\g_tmpa_box=\box30
\g_tmpb_box=\box31
\l__box_top_dim=\dimen109
\l__box_bottom_dim=\dimen110
\l__box_left_dim=\dimen111
\l__box_right_dim=\dimen112
\l__box_top_new_dim=\dimen113
\l__box_bottom_new_dim=\dimen114
\l__box_left_new_dim=\dimen115
\l__box_right_new_dim=\dimen116
\l__box_internal_box=\box32
\l__coffin_internal_box=\box33
\l__coffin_internal_dim=\dimen117
\l__coffin_offset_x_dim=\dimen118
\l__coffin_offset_y_dim=\dimen119
\l__coffin_x_dim=\dimen120
\l__coffin_y_dim=\dimen121
\l__coffin_x_prime_dim=\dimen122
\l__coffin_y_prime_dim=\dimen123
\c_empty_coffin=\box34
\l__coffin_aligned_coffin=\box35
\l__coffin_aligned_internal_coffin=\box36
\l_tmpa_coffin=\box37
\l_tmpb_coffin=\box38
\g_tmpa_coffin=\box39
\g_tmpb_coffin=\box40
\l__coffin_bounding_shift_dim=\dimen124
\l__coffin_left_corner_dim=\dimen125
\l__coffin_right_corner_dim=\dimen126
\l__coffin_bottom_corner_dim=\dimen127
\l__coffin_top_corner_dim=\dimen128
\l__coffin_scaled_total_height_dim=\dimen129
\l__coffin_scaled_width_dim=\dimen130
\c__coffin_empty_coffin=\box41
\l__coffin_display_coffin=\box42
\l__coffin_display_coord_coffin=\box43
\l__coffin_display_pole_coffin=\box44
\l__coffin_display_offset_dim=\dimen131
\l__coffin_display_x_dim=\dimen132
\l__coffin_display_y_dim=\dimen133
\g__file_internal_ior=\read1
\l__seq_internal_a_int=\count160
\l__seq_internal_b_int=\count161
\c__deprecation_minus_one=\count162
) (c:/texlive/2019/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
File: l3pdfmode.def 2019-04-06 v L3 Experimental driver: PDF mode
\l__driver_internal_box=\box45
\l__driver_color_stack_int=\count163
))
Package: xparse 2019-05-28 L3 Experimental document command parser
\l__xparse_current_arg_int=\count164
\g__xparse_grabber_int=\count165
\l__xparse_m_args_int=\count166
\l__xparse_v_nesting_int=\count167
)
Package: fontspec 2019/03/15 v2.7c Font selection for XeLaTeX and LuaLaTeX
Lua module: fontspec 2019/03/15 2.7c Font selection for XeLaTeX and LuaLaTeX (c:/texlive/2019/texmf-dist/tex/latex/fontspec/fontspec-luatex.sty
Package: fontspec-luatex 2019/03/15 v2.7c Font selection for XeLaTeX and LuaLaTeX
\l__fontspec_script_int=\count168
\l__fontspec_language_int=\count169
\l__fontspec_strnum_int=\count170
\l__fontspec_tmp_int=\count171
\l__fontspec_tmpa_int=\count172
\l__fontspec_tmpb_int=\count173
\l__fontspec_tmpc_int=\count174
\l__fontspec_em_int=\count175
\l__fontspec_emdef_int=\count176
\l__fontspec_strong_int=\count177
\l__fontspec_strongdef_int=\count178
\l__fontspec_tmpa_dim=\dimen134
\l__fontspec_tmpb_dim=\dimen135
\l__fontspec_tmpc_dim=\dimen136
 (c:/texlive/2019/texmf-dist/tex/latex/base/fontenc.sty
Package: fontenc 2018/08/11 v2.0j Standard LaTeX package
 (c:/texlive/2019/texmf-dist/tex/latex/base/tuenc.def
File: tuenc.def 2018/08/11 v2.0j Standard LaTeX file
LaTeX Font Info:    Redeclaring font encoding TU on input line 82.
)
luaotfload | db : Font names database loaded from C:/Users/Emon/.texlive2019/texmf-var/luatex-cache/generic/names/luaotfload-names.luc) (c:/texlive/2019/texmf-dist/tex/latex/fontspec/fontspec.cfg)
LaTeX Info: Redefining \itshape on input line 3783.
LaTeX Info: Redefining \slshape on input line 3788.
LaTeX Info: Redefining \scshape on input line 3793.
LaTeX Info: Redefining \upshape on input line 3798.
LaTeX Info: Redefining \em on input line 3828.
LaTeX Info: Redefining \emph on input line 3853.
))

Package fontspec Info: Font family 'SutonnyOMJ(0)' created for font
(fontspec)             'SutonnyOMJ' with options [Ligatures=TeX,Extension =
(fontspec)             .ttf,BoldFont = SutonnyMJ-Bold,ItalicFont =
(fontspec)             SutonnyMJ-Italic,BoldItalicFont =
(fontspec)             SutonnyMJ-BoldItalic,RawFeature = {mode=harf}].
(fontspec)              
(fontspec)              This font family consists of the following NFSS
(fontspec)             series/shapes:
(fontspec)              
(fontspec)             - 'normal' (m/n) with NFSS spec.:
(fontspec)             <->"[SutonnyOMJ.ttf]:mode=node;+tlig;mode=harf;"
(fontspec)             - 'small caps'  (m/sc) with NFSS spec.: 
(fontspec)             - 'bold' (bx/n) with NFSS spec.:
(fontspec)             <->"[SutonnyMJ-Bold.ttf]:mode=node;+tlig;mode=harf;"
(fontspec)             - 'bold small caps'  (bx/sc) with NFSS spec.: 
(fontspec)             - 'italic' (m/it) with NFSS spec.:
(fontspec)             <->"[SutonnyMJ-Italic.ttf]:mode=node;+tlig;mode=harf;"
(fontspec)             - 'italic small caps'  (m/itsc) with NFSS spec.: 
(fontspec)             - 'bold italic' (bx/it) with NFSS spec.:
(fontspec)             <->"[SutonnyMJ-BoldItalic.ttf]:mode=node;+tlig;mode=harf;"
(fontspec)             - 'bold italic small caps'  (bx/itsc) with NFSS spec.: 

LaTeX Info: Redefining \rmfamily on input line 9.
 (./test.aux)
\openout1 = test.aux

LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 11.
LaTeX Font Info:    ... okay on input line 11.
LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 11.
LaTeX Font Info:    ... okay on input line 11.
LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 11.
LaTeX Font Info:    ... okay on input line 11.
LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 11.
LaTeX Font Info:    ... okay on input line 11.
LaTeX Font Info:    Checking defaults for TU/lmr/m/n on input line 11.
LaTeX Font Info:    ... okay on input line 11.
LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 11.
LaTeX Font Info:    ... okay on input line 11.
LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 11.
LaTeX Font Info:    ... okay on input line 11.

Package fontspec Info: Adjusting the maths setup (use [no-math] to avoid
(fontspec)             this).

\symlegacymaths=\mathgroup4
LaTeX Font Info:    Overwriting symbol font `legacymaths' in version `bold'
(Font)                  OT1/cmr/m/n --> OT1/cmr/bx/n on input line 11.
LaTeX Font Info:    Redeclaring math accent \acute on input line 11.
LaTeX Font Info:    Redeclaring math accent \grave on input line 11.
LaTeX Font Info:    Redeclaring math accent \ddot on input line 11.
LaTeX Font Info:    Redeclaring math accent \tilde on input line 11.
LaTeX Font Info:    Redeclaring math accent \bar on input line 11.
LaTeX Font Info:    Redeclaring math accent \breve on input line 11.
LaTeX Font Info:    Redeclaring math accent \check on input line 11.
LaTeX Font Info:    Redeclaring math accent \hat on input line 11.
LaTeX Font Info:    Redeclaring math accent \dot on input line 11.
LaTeX Font Info:    Redeclaring math accent \mathring on input line 11.
LaTeX Font Info:    Redeclaring math symbol \colon on input line 11.
LaTeX Font Info:    Redeclaring math symbol \Gamma on input line 11.
LaTeX Font Info:    Redeclaring math symbol \Delta on input line 11.
LaTeX Font Info:    Redeclaring math symbol \Theta on input line 11.
LaTeX Font Info:    Redeclaring math symbol \Lambda on input line 11.
LaTeX Font Info:    Redeclaring math symbol \Xi on input line 11.
LaTeX Font Info:    Redeclaring math symbol \Pi on input line 11.
LaTeX Font Info:    Redeclaring math symbol \Sigma on input line 11.
LaTeX Font Info:    Redeclaring math symbol \Upsilon on input line 11.
LaTeX Font Info:    Redeclaring math symbol \Phi on input line 11.
LaTeX Font Info:    Redeclaring math symbol \Psi on input line 11.
LaTeX Font Info:    Redeclaring math symbol \Omega on input line 11.
LaTeX Font Info:    Redeclaring math symbol \mathdollar on input line 11.
LaTeX Font Info:    Redeclaring symbol font `operators' on input line 11.
LaTeX Font Info:    Encoding `OT1' has changed to `TU' for symbol font
(Font)              `operators' in the math version `normal' on input line 11.
LaTeX Font Info:    Overwriting symbol font `operators' in version `normal'
(Font)                  OT1/cmr/m/n --> TU/SutonnyOMJ(0)/m/n on input line 11.
LaTeX Font Info:    Encoding `OT1' has changed to `TU' for symbol font
(Font)              `operators' in the math version `bold' on input line 11.
LaTeX Font Info:    Overwriting symbol font `operators' in version `bold'
(Font)                  OT1/cmr/bx/n --> TU/SutonnyOMJ(0)/m/n on input line 11.
LaTeX Font Info:    Overwriting symbol font `operators' in version `normal'
(Font)                  TU/SutonnyOMJ(0)/m/n --> TU/SutonnyOMJ(0)/m/n on input line 11.
LaTeX Font Info:    Overwriting math alphabet `\mathit' in version `normal'
(Font)                  OT1/cmr/m/it --> TU/SutonnyOMJ(0)/m/it on input line 11.
LaTeX Font Info:    Overwriting math alphabet `\mathbf' in version `normal'
(Font)                  OT1/cmr/bx/n --> TU/SutonnyOMJ(0)/bx/n on input line 11.
LaTeX Font Info:    Overwriting math alphabet `\mathsf' in version `normal'
(Font)                  OT1/cmss/m/n --> TU/lmss/m/n on input line 11.
LaTeX Font Info:    Overwriting math alphabet `\mathtt' in version `normal'
(Font)                  OT1/cmtt/m/n --> TU/lmtt/m/n on input line 11.
LaTeX Font Info:    Overwriting symbol font `operators' in version `bold'
(Font)                  TU/SutonnyOMJ(0)/m/n --> TU/SutonnyOMJ(0)/bx/n on input line 11.
LaTeX Font Info:    Overwriting math alphabet `\mathit' in version `bold'
(Font)                  OT1/cmr/bx/it --> TU/SutonnyOMJ(0)/bx/it on input line 11.
LaTeX Font Info:    Overwriting math alphabet `\mathsf' in version `bold'
(Font)                  OT1/cmss/bx/n --> TU/lmss/bx/n on input line 11.
LaTeX Font Info:    Overwriting math alphabet `\mathtt' in version `bold'
(Font)                  OT1/cmtt/m/n --> TU/lmtt/bx/n on input line 11.
 [1{c:/texlive/2019/texmf-var/fonts/map/pdftex/updmap/pdftex.map}
Missing character: There is no ক (U+0995) in font [SutonnyMJ-Bold.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no   (U+0000) in font [SutonnyMJ-Bold.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no অ (U+0985) in font [SutonnyMJ-Bold.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no ব (U+09AC) in font [SutonnyMJ-Bold.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no স (U+09B8) in font [SutonnyMJ-Bold.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no ্ (U+09CD) in font [SutonnyMJ-Bold.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no থ (U+09A5) in font [SutonnyMJ-Bold.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no   (U+0000) in font [SutonnyMJ-Bold.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no ক (U+0995) in font [SutonnyMJ-Italic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no   (U+0000) in font [SutonnyMJ-Italic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no অ (U+0985) in font [SutonnyMJ-Italic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no ব (U+09AC) in font [SutonnyMJ-Italic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no স (U+09B8) in font [SutonnyMJ-Italic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no ্ (U+09CD) in font [SutonnyMJ-Italic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no থ (U+09A5) in font [SutonnyMJ-Italic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no   (U+0000) in font [SutonnyMJ-Italic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no ক (U+0995) in font [SutonnyMJ-BoldItalic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no   (U+0000) in font [SutonnyMJ-BoldItalic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no অ (U+0985) in font [SutonnyMJ-BoldItalic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no ব (U+09AC) in font [SutonnyMJ-BoldItalic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no স (U+09B8) in font [SutonnyMJ-BoldItalic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no ্ (U+09CD) in font [SutonnyMJ-BoldItalic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no থ (U+09A5) in font [SutonnyMJ-BoldItalic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no   (U+0000) in font [SutonnyMJ-BoldItalic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no ক (U+0995) in font [SutonnyMJ-Italic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no   (U+0000) in font [SutonnyMJ-Italic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no অ (U+0985) in font [SutonnyMJ-Italic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no ব (U+09AC) in font [SutonnyMJ-Italic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no স (U+09B8) in font [SutonnyMJ-Italic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no ্ (U+09CD) in font [SutonnyMJ-Italic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no থ (U+09A5) in font [SutonnyMJ-Italic.ttf]:mode=node;+tlig;mode=harf;!
Missing character: There is no   (U+0000) in font [SutonnyMJ-Italic.ttf]:mode=node;+tlig;mode=harf;!
] (./test.aux))

Here is how much of HarfTeX's memory you used:
 11418 strings out of 494308
 100000,383344 words of node,token memory allocated
 544 words of node memory still in use:
   3 hlist, 1 vlist, 1 rule, 2 glue, 3 kern, 23 glyph, 10 attribute, 40 glue_spec, 10 attribute_list, 1 write nodes
   avail lists: 2:19,3:48,4:2,5:21,6:1,7:63,9:8
 15645 multiletter control sequences out of 65536+600000
 36 fonts using 6252975 bytes
 47i,4n,70p,362b,446s stack positions out of 5000i,500n,10000p,200000b,100000s
<./SutonnyMJ-BoldItalic.ttf><./SutonnyMJ-Italic.ttf><./SutonnyMJ-Bold.ttf><./SutonnyOMJ.ttf>
Output written on test.pdf (1 page, 12193 bytes).

PDF statistics: 36 PDF objects out of 1000 (max. 8388607)
 20 compressed objects within 1 object stream
 0 named destinations out of 1000 (max. 131072)
 1 words of extra memory for PDF output out of 10000 (max. 100000000)

How to fix this?

  • 2
    Unrelated but nevertheless important: Why should the minimal class be avoided? – Henri Menke Jun 18 '19 at 01:50
  • 2
    word is not a reliable application to test glyphs in a font: it sometimes fills up from other fonts, or fakes bold/slanted fonts. xelatex doesn't show the glyphs either, so there are probably simply not there. – Ulrike Fischer Jun 18 '19 at 06:48
  • 1
    The bold/italic .ttf files probably do contain something, you might try to redefine \textit and \textbf to switch the font (with \DeclareTextFontCommand etc) and print the argument as if it was normal text. For bold and italic together this means you should define a separate command, or try to be smart about setting flags and determining from one command if you are inside the other etc - but that is probably difficult and error-prone. – Marijn Jun 18 '19 at 10:07

2 Answers2

3

This is certainly a font problem. If you examine the files SutonnyMJ-*.ttf, then you see that they are of sizes around 73 KB, while SutonnyOMJ.ttf is about 352 KB! This should raise a red flag already.

Indeed, the fonts SutonnyMJ-*.ttf:

  1. Do not follow the Unicode standard to assign glyph to the correct code point. For example, the glyph for U+0995 (Bengali Letter Ka) is encoded at U+004B (Latin Capital Letter K).
  2. Do not contain the necessary lookup table(s) to perform consonant cluster ligatures. For example, <U+09B8 U+09CD U+09A5> (Bengali Letter Sa, Bengali Sign Virama, Bengali Letter Tha) cannot form the correct cluster.

SutonnyMJ

\documentclass{article}
\usepackage{fontspec}
\setmainfont{SutonnyOMJ}[
    Extension = .ttf,
    BoldFont = SutonnyMJ-Bold,
    ItalicFont = SutonnyMJ-Italic,
    BoldItalicFont = SutonnyMJ-BoldItalic,
%    RawFeature = {mode=harf}
]
\parindent 0pt
\begin{document}

    কি অবস্থা? \textbf{wK Ae¯’v?} \textit{wK Ae¯’v?} \\
    \textbf{\textit{wK Ae¯’v?}} \emph{wK Ae¯’v?}

\medskip

\char"0995\char"09BF\ \char"0985\char"09AC\char"09B8\char"09CD\char"09A5\char"09BE\char"003F \\
\char"0077\char"004B\ \char"0041\char"0065\char"00AF\char"2019\char"0076\char"003F\ %
\textbf{\char"0077\char"004B\ \char"0041\char"0065\char"00AF\char"2019\char"0076\char"003F}

\end{document}
Ruixi Zhang
  • 9,553
  • What are these wK Ae¯’v?, ANSI? –  Jun 18 '19 at 20:45
  • 1
    @EmonHaque The string wK Ae¯’v? (with Unicode given by <U+0077 U+004B space U+0041 U+0065 U+00AF U+2019 U+0076 U+003F>) is the messed-up encoding of কি অবস্থা?—messed up because SutonnyMJ-*.ttf and friends encode them completely wrong. – Ruixi Zhang Jun 18 '19 at 21:02
  • 1
    @EmonHaque Note that: 1) The order wK (<U+0077 U+004B>) is wrong, because কি should correspond to an input of Kw (<U+004B U+0077>). 2) স্থ has to be “faked” by an input of ¯’ (<U+00AF U+2019>), not even the same number of characters (!). – Ruixi Zhang Jun 18 '19 at 21:08
  • 1
    @EmonHaque This could be related to a very common problem in East Asian Scripts (Chinese, Japanese and Korean, in particular). See Mojibake on Wikipedia. Anyway, the fonts are so broken that they are of no practical use in XeTeX/LuaTeX. – Ruixi Zhang Jun 18 '19 at 21:17
  • XeTex and LuaTex could adapt Miscrosoft's way to make any regular font fatter to make it look like bold and slanted to transform the regular into italic and by this we easily can kick out the burden of making additional .ttf files for bold, italic, etc. It's same thing, just a bit fatter and/or inclined! We've already kicked out .h files from coders' Job with Java, C#, etc. –  Jun 18 '19 at 21:52
  • 1
    @EmonHaque You can use AutoFakeBold, and AutoFakeItalic with fontspec (after uninstalling the broken italic, bold and bold italic fonts). However it works only with XeTeX currently (a combination of hostorical lack of support in LuaTeX and outdated fontspec). The respective low level font options should work, but I don't remember them, worth asking a new question for it. – خالد حسني Jun 18 '19 at 23:35
  • @KhaledHosny, I've two more questions for now here and there –  Jun 20 '19 at 00:47
2

The fonts are broken, the italic, bold and bold italic fonts have the Bangala glyphs in the place of Latin characters. Only the regular font is correctly encoded: Italic font showing incorrect encoding

  • It's a very popular font here in my country. Most of us use it with MS Word where it apparently works somehow. –  Jun 18 '19 at 20:49
  • 2
    @EmonHaque MS Word works largely because the italic and bold faces are either faked (by algorithmic transformations) or substituted (by fallback to other system fonts). This is what Ulrike Fischer has pointed out in her original comment. – Ruixi Zhang Jun 18 '19 at 20:56